Mailinglisten-Archive |
Hi Sebastian Sebastian Mendel schrieb: >>Das andere Problem liegt im UNION selbst, welcher nur in einer aeusseren >>Abfrage vorkommen kann, d.h. die Anfrage selbst kann nicht wieder direkt >>als nested-Anfrage benutzt werden > > > wo liegt da ein Problem? Welches Nested? was meinst du in diesem > Zusammenhang mit 'äußerer Abfrage'? > > das sind doch lediglich drei getrennte Abfragen (die man übrigens, falls > z.b. kein MySQL 4 vorliegt, auch getrennt schicken kann). > 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 oder vielleicht auch noch HAVING durchzufuehren. 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. Ansonsten ist die Frage von Mathias, in Hinblick auf deine Antwort von Andreas, nicht ganz exakt gewesen, da mir auch nicht ganz klar war, ob er die 5 vorhergehenden und 5 nachfolgenden Ids ORDER BY date haben wollte, oder die 5 vorhergehenden und 5 nachfolgenden dates ORDER BY date. tschau -- Software-Tomography - we make the invisible visible! Jan Kuehl Software-Tomography GmbH Karlstr.7 D-03044 Cottbus e-Mail: jan.kuehl at software-tomography.com http://www.software-tomography.com Phone: +49 (0355) 4945077 ----------------------------
php::bar PHP Wiki - Listenarchive