Mailinglisten-Archive |
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