Geschachtelte SQL Anweisungen

Hallo an Alle !

Ich verstehe den Anwendung einer geschachtelten SQL Abfrage nicht. Warum wende ich sie an, trotzdem ich eine Tabelle mittels EQUI-JOIN verknüpfen kann ?

Für Hilfe bin ich sehr dankbar

mfg
Alexandro

Moin, Alexandro,

Ich verstehe den Anwendung einer geschachtelten SQL Abfrage
nicht.

der innere Select liefert ein Ergebnis, das der äußere Select auswertet.

Warum wende ich sie an, trotzdem ich eine Tabelle
mittels EQUI-JOIN verknüpfen kann ?

Weil es Fälle gibt, in denen nur eine geschachtelte Abfrage1 weiterhilft. Du erwartest jetzt aber nicht, dass ich solche Fälle konstruiere, oder?

Gruß Ralf

1 Unter geschachtelter Abfrage verstehe ich die nested query.

Hi Alexandro,
ein Equi Join und verschachtelte SQL-ABfragen erfüllen verschiedene Zwecke, wobei es natürlich auch mal Überschneidungen geben kann.

Von den verschachtelten SQL-Abfragen gibt es diverse Varianten:

  • Selects in der Spalenliste. Also statt einer Spalte wird ein komplettes SQL-Statement angegeben, das einen oder keinen Wert zurückliefert.
    Unterschied zum Join: Wenn es mehr als eine Ergebniszeile gibt produziert der join mehr Ergebnise und die verschachtelte SQL-Abfrage.
    Wenn die hinzu selektierte Spalte dann im endeffekt doch nicht selektiert wird (weil das ganze in einem view steht, der mal mit mal ohne die fragliche Spalte verwendet wird) kann die Datenbank den subselect einfach wegoptimieren. Das geht mit dem Join nur wenn entsprechende FKs vorhanden sind.

  • Selects im From Bereich des Statements, (inline Views). Hier kann gruppiert werden, oder die Anzahl der Zeilen eingeschränkt werden bevor gejoint wird. Das macht einen erheblichen Unterschied für Aggregatsfunktionen.

  • Selects in der Where Klausel: Entweder wie Spalten selekts oben, oder in Verbindung mit ‚IN‘ oder ‚EXISTS‘

Hier wird durch die Formulierung schon klar das die ergebnisse des Subselekts nicht mit ausgegeben werden, sondern nur die Ergebnismenge mitbestimmen.

Das sind so die Unterschiede die mir auf die Schnelle einfallen. Im Zweifelsfall nimm immer das was dir am einleuchtensten erscheint. In vielen Fällen unterscheiden sich formulierungen, die gleichwertig erscheinen, wenn Null-Werte mit ins Spiel kommen. Auf die sollte man daher immer einen besonderen Blick werfen.

Mehr können wir dir sagen, wenn du ein konkretes Beispiel hast, am besten mit Angabe der verwendeten Datenbank

Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Jens !

Du meintest der JOIN Produziert bei mehreren ergebniszeilen mehr ergebnisse als das verschachtelte IN oder ?

Unterschied zum Join: Wenn es mehr als eine Ergebniszeile gibt
produziert der join mehr Ergebnise und die verschachtelte
SQL-Abfrage.