Ich habe ein Problem.
ich bin noch nicht so gut in SQL und habe mir eine SQL abfrage gebastelt die auch das tut was ich haben will aber verstanden habe ich die abfrage nicht .
Kann mir vielleicht einer erklkären was bei dieser Abfrage abläuft ???
select c.srnr from
(Select distinct x.srnr from basdta.spe14p as x where x.srnr='10017408' and x.sragerg='+' and x.sragk='s') As a,
(Select distinct y.srnr from basdta.spe14p as y where y.srnr='10017408' and y.sragerg='-' and y.sragk='Lu(a)')As b,
(Select distinct z.srnr from basdta.spe14p as z where z.srnr='10017408' and z.sragerg='+' and z.sragk='Lu(b)')As c
Also einfach die logik die dahinter steckt was er macht ....
Announcement
Collapse
No announcement yet.
SQL Abfrage verstehen :(
Collapse
X
-
supi dann tut die abfrage genau das was sie soll und ist für meinen gebrauch auch logisch
-
Originally posted by firestone84 View PostAlso was mir aufgefallen ist
wenn eine der drei unterabfragen ein leeres Resultset liefert so ist das gesamte Resultset auch leer. Dabei ist es egal welche der drei unterabfragen das ist . Kann das von der SQL Logik her stimmen ?
Ist nun eine der Tabellen leer, ist das Kreuzprodukt leer,
denn etwas mal 0 ist 0...
Leave a comment:
-
Also was mir aufgefallen ist
wenn eine der drei unterabfragen ein leeres Resultset liefert so ist das gesamte Resultset auch leer. Dabei ist es egal welche der drei unterabfragen das ist . Kann das von der SQL Logik her stimmen ?
Leave a comment:
-
Hallo,
ich glaube die Logik kann dir keiner ausser du selber erklären. Das Statement ist ziemlich "wirr" und ich kann mir nicht vorstellen, daß ein wirklich gewolltes Ergenbis dabei herauskommt.
Ich kann dir maximal beschreiben, was der SQL-Server mit deiner Abfrage macht:
Zuerst löst er die drei Inline-Views auf. Diese sind alle eine einspaltige Untermenge der Tabelle basdta.spe14p. In dem äußeren Select verbindet er die drei Inline-Views quasi wie Tabellen miteinander. Da aber keine Beziehung in Form eines expliziten oder impliziten Join angegeben wurde, bildet er aus allen drei Inline-Views ein Kreuzprodukt (d.h. er kombiniert jede Zeile jeder Inline-View mit jeder Zeile der beiden anderen). Von diesem Kreuzprodukt wird dann nur die Spalte mit den Werten aus c ausgegeben.
Im Endeffekt wird die Anzeige von
[highlight=sql]Select distinct z.srnr
from basdta.spe14p as z
where z.srnr='10017408' and z.sragerg='+' and z.sragk='Lu(b)'[/highlight] mehrfach wiederholt und zwar genau (Anzahl der DS von a * Anzahl der DS von b) - und diese Logik erschließt sich mir dann nicht.
Gruß Falk
Leave a comment:
Leave a comment: