Announcement

Collapse
No announcement yet.

SQL Abfrage verstehen :(

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • firestone84
    started a topic SQL Abfrage verstehen :(

    SQL Abfrage verstehen :(

    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 ....

  • firestone84
    replied
    supi dann tut die abfrage genau das was sie soll und ist für meinen gebrauch auch logisch

    Leave a comment:


  • ebis
    replied
    Originally posted by firestone84 View Post
    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 ?
    Wie Falk sagte, wir das Kreuzprodukt gebildet
    Ist nun eine der Tabellen leer, ist das Kreuzprodukt leer,
    denn etwas mal 0 ist 0...

    Leave a comment:


  • firestone84
    replied
    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:


  • Falk Prüfer
    replied
    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:

Working...
X