Thema: Delphi sQL Join ?? wie gehts?

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

Re: sQL Join ?? wie gehts?

  Alt 21. Mär 2008, 22:22
Zitat von SQLNoop:
wunderbar es funktioniert... nur das statement kapiere ich nicht
Na das ist nicht so schwer.
Wenn man schreibt:
TabA LEFT OUTER JOIN TabB ON TabA.IdFeld1=TabB.IdFeld1 dann bekommt am ALLE Datensätze von TabA verknüpt mit den Datensätzen von TabB.
Falls in TabB kein passender Datensatz, dann sind die Felder von Tab = NULL.
Das ist übrigens das Gleiche wie:
TabB RIGHT OUTER JOIN TabA ON TabA.IdFeld1=TabB.IdFeld1 Ich verwende immer LEFT Outer Join, dass finde ich leichter nachzuvollziehen.

Nachdem wir TabA und TabB verjoined haben, kommt eine dritte Tabelle ins Spiel
SQL-Code:
(TabA LEFT OUTER JOIN TabB ON TabA.IdFeld1=TabB.IdFeld1)
LEFT OUTER JOIN TabC ON TabB.IdFeld2 = TabC.IdFeld2
Das heisst also bei Joins werden immer 2 Tabellen verknüpft; kommt eine weitere Tabelle hinzu,
wird das bisherige Ergebnis geklammert (nur bei Access!) und man "joind" die 3. Tabelle hinzu.

Die Klammersetzung ist nur bei Access notwendig; andere DBMS sind intelligenter und ermitteln die optimale Verknüpfungsreihenfolge selber.
Es macht durchaus einen Unterschied in welcher Reihenfolge man Tabellen verknüpt.
Das End-Ergebnis bleibt gleich,aber die Zwischenergebnisse unterscheiden sich - es gibt eine optimale Reihenfolge, bei der die Speicherbelastung am gringsten ist.
  Mit Zitat antworten Zitat