phpbar.de logo

Mailinglisten-Archive

SQL abfrage zwischen drinn?

SQL abfrage zwischen drinn?

Jan Kuehl jan.kuehl at software-tomography.com
Mit Mai 26 18:23:15 CEST 2004


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