Vinzenz Mai: Problem mit SQL-Abfrage

Beitrag lesen

Hallo Bobby,

weil nicht jedes dbms mit aliasnamen in der where klausel arbeitet. benutze den richtigen spaltennamen buchungen.anzahl und es wird gehen.

Ok. Und wie kann ich folgende Abfrage gestalten? Dort erscheint ebenfalls der genannte Fehler:

das ist viel schlimmer. Sowas akzeptiert nur MySQL. Jedes andere DBMS wirft vernünftigerweise mit Fehlermeldungen um sich.

SELECT * ,

Raus mit SELECT *. Das geht hier nicht. Du musst schließlich nach _jeder_ einzelnen Spalte gruppieren, auf die keine Aggregatsfunktion angewandt wird. Somit musst Du sowieso jede Spalte aufführen.

Welche Details Du dort haben willst, ist natürlich wichtig - und es kann sein dass Du dafür eine korrelierte Unterabfrage benötigst. Für korrelierte Subselects findest Du im Archiv viele viele Beiträge, oft von Ilja oder mir :-)

SUM(buchungen.anzahl) AS buchungenanzahl

WHERE belegungen.kontingent > buchungenanzahl
Weißt du auch dafür ne Lösung?

Dafür gibt es die HAVING-Klausel. In der darfst Du (in MySQL) sogar Spaltenaliasnamen verwenden.

Ein paar Beispieldatensätze und das gewünschte Ergebnis wären ganz nett. Sowas hilft viel mehr als falsche SQL-Statements.

Freundliche Grüße

Vinzenz