gottlieb: GROUP BY und ORDER BY Zusammenspiel

Beitrag lesen

Soo,

Ein A.Gebot hab ich leider nicht. Alle Gebote liegen in der Tabelle "Verkaufsgebote"

du benutzt die tabelle aber zweimal und einmal in der unterabfrage mit dem alias-namen A, ergo gibt es auch ein a.Gebot

Oh, das ist natürlich ein Fehler von mir gewesen. In der zweiten Abfrage muss es natürlich auch AS B heißen, anstatt "FROM Verkaufsgebote AS A".

das liegt daran, dass du natürlich auch NULL werte aus der Unterabfrage zurück bekommst, wenn noch gar kein gebot vorliegt. nun gibt es verschiedene wege, das zu lösen. entwerder zwei abfragen mit UNION ALL verbinden oder aber in der WHERE klausel noch ein OR einfügen, dass nach NULL prüft.

Gut, Union All kenne ich nicht, werde mich aber gleich dadrüber schlau machen.

WHERE A.datum>now()
AND (B.gebot = (SELECT MAX(A.gebot)  <----- hier das A.Gebot
                FROM Verkaufsgebote A
                WHERE A.verkaufid=B.verkaufid
               )
     OR
     NOT EXISTS (SELECT NULL
                 FROM Verkaufsgebote A
                 WHERE A.verkaufid=B.verkaufid
                )
     )

Ich probiere mal diese Variante gleich aus.

"NOT EXISTS (SELECT NULL".. Nach Null prüfen heißt, er schaut, ob es in "FROM Verkaufsgebote A  WHERE A.verkaufid=B.verkaufid" überhaupt was gibt. Falls nein, ist die Where-Bedinung mit NOT EXISTS auch erfüllt.