Ilja: GROUP BY und ORDER BY Zusammenspiel

Beitrag lesen

yo,

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

B.gebot=(SELECT MAX(B.gebot) klappt ja auch gut, wenn ein Gebot vorliegt. Wenn nicht, dann bleibt der ganze Artikel weg, falls kein Gebot vorliegt.

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.

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
                )
     )

Ilja