My-SQL-Query-Problem mit Max()
Lynky
- datenbank
Hallo,
Ich habe ein Problem mit der Max()-Funktion. Ich möchte aus einer Datenbank dasjenige Bild auswählen, dass als Letztes hochgeladen wurde (Feld "erzeugt" ist Timestamp).
SELECT pilzdat_pilze_bilddateien.bild_num,
pilzdat_pilze.PILZ_ID,
pilzdat_pilze.name_lat,
pilzdat_gattungen.lat_gattname
FROM pilzdat\_pilze\_bilddateien
,
pilzdat\_pilze
,
pilzdat\_gattungen
WHERE pilzdat_pilze_bilddateien.PILZ_ID=pilzdat_pilze.PILZ_ID
AND pilzdat_pilze.gatt_code=pilzdat_gattungen.gatt_code
HAVING Max(pilzdat_pilze_bilddateien.erzeugt)
Als Ergebnis erhalte ich ÜBERHAUPT NIX. Warum das??
Ich hoffe, die seltsame Namensgebung verwirrt nicht zu sehr ;)
Ich danke für jede Hilfe!
Grüsse,
Lynky
HAVING Max(pilzdat_pilze_bilddateien.erzeugt)
Hallo,
leider bin ich mit der funktion von HAVING nicht so vertraut, deswegen würde ich dir folgendes vorschlagen:
SELECT max(erzeugt) AS letztes, ...., WHERE erzeugt=letztes AND .... LIMIT 1
das könnte, wenn ich mich nicht irre so funktionieren, wie du es haben willst
mfg,
steffen
Hallo,
hab' jetzt folgendes Statement:
SELECT pilzdat_pilze_bilddateien.bild_num,
pilzdat_pilze.PILZ_ID,
pilzdat_pilze.name_lat,
pilzdat_gattungen.lat_gattname
Max(pilzdat_pilze_bilddateien.erzeugt) AS Datum
FROM pilzdat\_pilze\_bilddateien
,
pilzdat\_pilze
,
pilzdat\_gattungen
WHERE pilzdat_pilze_bilddateien.erzeugt=Datum
AND pilzdat_pilze_bilddateien.PILZ_ID=pilzdat_pilze.PILZ_ID
AND pilzdat_pilze.gatt_code=pilzdat_gattungen.gatt_code
HAVING Max(pilzdat_pilze_bilddateien.erzeugt)
MySQL meldet mir aber einen Syntaxfehler in Linie 5.
Grrrrr.
Was nu?
Lynky
Natürlich musst du das so machen, wie es Tobias K. beschrieben hat! ich depp ;-)
ein LIMIT 1 dahinter und du bekommst den neuesten datensatz.
was willst du immer mit deinem HAVING? willst du die funktion ausprobieren oder was?
mfg,
steffen
Hallo,
hab' jetzt folgendes Statement:SELECT pilzdat_pilze_bilddateien.bild_num,
pilzdat_pilze.PILZ_ID,
pilzdat_pilze.name_lat,
pilzdat_gattungen.lat_gattname
Max(pilzdat_pilze_bilddateien.erzeugt) AS DatumFROM
pilzdat\_pilze\_bilddateien
,
pilzdat\_pilze
,
pilzdat\_gattungen
WHERE pilzdat_pilze_bilddateien.erzeugt=Datum
AND pilzdat_pilze_bilddateien.PILZ_ID=pilzdat_pilze.PILZ_ID
AND pilzdat_pilze.gatt_code=pilzdat_gattungen.gatt_codeHAVING Max(pilzdat_pilze_bilddateien.erzeugt)
MySQL meldet mir aber einen Syntaxfehler in Linie 5.
Grrrrr.
Was nu?
das Komma nach pilzdat_gattungen.lat_gattname
fehlt
Christian
Hi,
leider bin ich mit der funktion von HAVING nicht so vertraut, deswegen würde ich dir folgendes vorschlagen:
HAVING ist keine Funktion.
Es ist eigentlich genau dasselbe wie WHERE, nur das man auf im String vereinbarte Variablen zurückgreifen kann.
Bsp:
SELECT id AS nummer FROM table WHERE nummer = 3
--> Fehler, Spalte nummer ist unbekannt
SELECT id AS nummer FROM table HAVING nummer = 3
--> kein Fehler
Gruß
Christian
leider bin ich mit der funktion von HAVING nicht so vertraut, deswegen würde ich dir folgendes vorschlagen:
HAVING ist keine Funktion.
hallo,
das habe ich auch nie behauptet. "mit der funktion von HAVING" -> funktoin VON - und nicht mit der "funktion HAVING".
aber nichts für ungut,
steffen
Hallo Lynky,
HAVING Max(pilzdat_pilze_bilddateien.erzeugt)
warum sortierst du nicht einfach nach erzeugt (ORDER BY erzeugt DESC) und nimmst dann die erste Zeile (LIMIT 0,1)?
Grüße aus Nürnberg
Tobias
*ggg*
Halt mich für penibel, aber das ist nicht elegant und neugierig bin ich ja auch ;)
Es muss doch auch eine Möglichkeit geben, das so zu lösen.
Grüsse,
Lynky
Vielen Dank, liebe Leute.
Ich hab jetzt eingesehen, daß das mit dem Having nich so richtig der Hit war und mich für Tobis Lösung entschieden :)
Lynky