Rolf B: SQL Select in Select (oder 2x Count in einem SQL)

Beitrag lesen

Hallo dedlfix,

Bei mehreren Werten kann man in Erwägung ziehen, die Subquery ins FROM/JOIN zu schreiben und sie dort auf eine Ergebniszeile pro Hauptquery einzudampfen, so dass ebenfalls das unnötige kartesische Produkt vermieden wird.

Zu bemerken wäre noch, dass man in dem Fall einen LEFT JOIN verwenden sollte, weil man sonst bei einem Nichttreffer der Subquery gar kein Ergebnis mehr bekommt.

Bei mehreren Werten aus der Subquery wäre "kann" für mich das falsche modale Hilfswerb; ich würde "muss" einsetzen. Denn sonst führt man die Subquery redundant mehrfach aus. Der Server optimiert das möglicherweise weg, aber die Redundanz beim Schreiben, inclusive der Fehleranfälligkeit beim Ändern, bleibt.

Die Frage nach dem Eindampfen stellt sich hoffentlich gar nicht erst, denn wenn die Abfrage Kandidat für eine correlated Subquery war, dann hat man ja sowieso nur einen Treffer erwartet bzw. hätte andernfalls vom SQL Server zur Ausführungszeit eine Watschn bekommen. Oder ist MySQL da AUCH wieder anders?!?!

Rolf

--
sumpsi - posui - clusi