phpbar.de logo

Mailinglisten-Archive

SQL abfrage zwischen drinn?

SQL abfrage zwischen drinn?

Sebastian Mendel lists at sebastianmendel.de
Mit Mai 26 18:23:13 CEST 2004


Jan Kuehl said the following on 26.03.2004 15:27:

> Laut den derzeitigen Standards SQL92, SQL99 ist es nicht moeglich, und 
> es sollte mich schwer wundern, wenn MySQL etwas anderes erlauben sollte, 
> etwas in der Art zu schreiben wie:
> 
> SELECT...
> FROM ( SELECT ... FROM ... UNION SELECT ... FROM ... )
> ...
> 
> oder auch
> 
> SELECT ...
> FROM ...
> WHERE NOT EXISTS ( SELECT ... FROM ... UNION SELECT ... FROM ... )
> 
> D.h. das der Verbund nur als aeussere Abfrage moeglich ist. Dem 
> entsprechend sollte man sehr vorsichtig damit umgehen, da es auch nicht 
> mehr moeglich ist auf einem UNION ein ORDER BY

ein "ORDER BY" geht
(http://www.mysql.com/doc/en/UNION.html)


> oder vielleicht auch noch 
> HAVING durchzufuehren.

wo sollte auch der Sinn eines HAVING liegen, das kann ja bereits vorher 
bei den einzelnen SELECTS passieren


> Das heisst jetzt nicht, dass es fuer den hier 
> betrachteten Fall nicht sogar guenstiger ist deine Variante mit dem 
> UNION zu benutzen, da sie einfach performanter ist und das ORDER BY 
> ausgefuehrt auf dem Subqueries sogar die richtige Reihenfolge fuer das 
> Ergebnis liefern sollte, solange der MySQL-Optimierer nicht auf die Idee 
> kommt, die Reihenfolge der Subqueries zu vertauschen.

dein Umgang mit dem Wort 'Subquery' irritiert mich etwas!

normalerweiße (IMHO) ist ein Subquery eine Abfrage deren Ergenisse 
bestandteil einer weitern Abfrage sind!

z.b.: SELECT * FROM ( SELECT * FROM `tab` )

bei der Verwendung von UNION gibt es aber nicht zwingend Subquerys!
UNION macht doch nix weiter als die Ergebnisse mehrerer Abfragen 
_hintereinander_ zu hängen, in vollkommener unabhängigkeit von einander!


UNION und Subquerys sind zwei völlig verschiedene Sachen!


-- 
Sebastian Mendel (www.sebastianmendel.de)

*www.warzonez.de* | www.tekkno4u.de | www.nofetish.com


php::bar PHP Wiki   -   Listenarchive