• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Minimum der letzten 3 Werte einer Spalte

noxx2

Neues Mitglied
Hallo,

ich versuche mir aus den letzen 3 Werten einer Spalte das MIN() anzeigen zu lassen,
ab ich bekomme immer nur den Minimalwert der ganzen Spalte.

Irgendwas scheint hier nicht zu stimmen.

PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", true); 

require_once ('../files/konfiguration.php');
$link = mysql_connect  ($MYSQL_HOST, $MYSQL_BENUTZER, $MYSQL_KENNWORT );
mysql_select_db($MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");


$res = mysql_query("SELECT MIN(`Boehe_Mittel`) as min_boehe FROM $MYSQL_TABELLE ORDER BY id DESC LIMIT 3") or die("Datenbankzugriff gescheitert!");
$daten = mysql_fetch_array($res);
echo $daten['min_boehe'];


mysql_close($link);
?>
 
Das geht so leider nicht. Aggregatsfunktionen werden immer auf den gesamten Datensatz angewendet.

Du brauchst ein Subselect dazu:

Code:
SELECT MIN(`Boehe_Mittel`) as min_boehe 
FROM 
  (
    SELECT `Boehe_Mittel`
    FROM `tabelle`
    LIMIT 3
  )
AS SUBTBL
 
hmm, so wohl nicht... :?:

PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", true); 

require_once ('../files/konfiguration.php');
$link = mysql_connect  ($MYSQL_HOST, $MYSQL_BENUTZER, $MYSQL_KENNWORT );
mysql_select_db($MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
    
    
$res = mysql_query("SELECT MIN(`Boehe_Mittel`) as min_boehe FROM (SELECT `Boehe_Mittel` FROM $MYSQL_TABELLE DESC LIMIT 3") AS SUBTBL) or die("Datenbankzugriff gescheitert!");
$daten = mysql_fetch_array($res);
echo ("Min : ").$daten['min_boehe'];
    echo ("<br>");    
echo ("Max : ").$daten['max_boehe'];


mysql_close($link);


?>
 
Wo meckert er denn?

Edit: Das DESC ist natürlich fehl am Platze. Da muss ein ORDER BY `Boehe_Mittel` Mittel davor.

MySQL lässt sich übrigens mit http://php.net/manual/de/function.mysql-error.php debuggen. Sämtliche mysql_* Funktionen sind übrigens deprecated und fliegen in zukünftigen PHP Versionen wahrscheinlich raus.

Schau dir mysqli oder noch besser PDO an.
 
Zuletzt bearbeitet:
PHP:
$res = mysql_query("SELECT MIN(`Boehe_Mittel`) as min_boehe FROM (SELECT `Boehe_Mittel` FROM $MYSQL_TABELLE ORDER BY `Boehe_Mittel` LIMIT 3") AS SUBTBL) or die("Datenbankzugriff gescheitert!")

führt zu


Parse error: syntax error, unexpected 'AS' (T_AS) in C:\xampp\htdocs\mysql_test.php on line 30


Edit:

Habs nun, danke nochmal :)

PHP:
$res = mysql_query("SELECT MIN(`Boehe_Mittel`) as min_boehe FROM (SELECT `Boehe_Mittel` FROM $MYSQL_TABELLE ORDER BY `id` DESC LIMIT 3) AS SUBTBL") or die("Datenbankzugriff gescheitert!");
 
Zuletzt bearbeitet:
Zurück
Oben