Navigation

Verbindungen (Joins)

  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.
  • : Function split() is deprecated in /var/www/vhosts/k97518.web259.dogado.net/WWWROOT/92652/htdocs/modules/filter/filter.module on line 1200.

Verbindungen

Verbindungen oder auch Joins verwendet man, um andere Tabellen in einer Tabelle zu verknüpfen.
Die Standardverknüpfung ist ein INNER JOIN.
Dabei werden alle Daten aus der übergeordneten Tabelle angezeigt, die auch einen Datensatz in der Untertabelle haben.

FROM Tabelle INNER JOIN Tabelle2 ON Tabelle.Feld = Tabelle2.Feld

Bei mehreren Tabellen kommen alle weiteren Tabellen dazwischen

FROM Tabelle1
  INNER JOIN (Tabelle2 ON Tabelle1.ID = Tabelle2.ID)
  INNER JOIN (Tabelle3 ON Tabelle3.ID = Tabelle2.ID)



Oder auch in eigene Klammern, wenn zB die 2. Tabelle mit der 3. Tabelle verknüpft ist etc.
Neben den INNER JOIN's gibt es auch noch LEFT und RIGHT JOIN.
Mit diesen Verbindungen wird nicht die Schnittmenge einer Abfrage gebildet, sondern es werden auch Datensätze angezeigt, die keine Unter- Überdatensätze haben.
Die Felder in der Abfrage bleiben dann leer!
Als Beispiel:

Man hat eine Tabelle mit Artikel und eine Tabelle mit Kunden.
Wenn man die Tabelle mit einem INNER JOIN verknüpft, dann würden nur die Artikel angezeigt, die auch mindestens einmal gekauft worden sind.
Wenn man nun auf einen LEFT JOIN umstellt, dann werden alle Artikel angezeigt.

SELECT
	*
FROM
	Tabelle1
LEFT JOIN Tabelle2 ON Tabelle1.KundenID = Tabelle2.KundenID



Neben diesen 3 häufig gebrauchten Verbindungen gibt es auch noch die Theta Joins:

FROM Tabelle INNER JOIN Tabelle2 ON Tabelle.ID <= Tabelle2.ID

Bei einem normalen INNER JOIN wird der gleiche Wert gesucht hier kann man <, > verwenden.


Eine weitere Verbindung stellen UNIONabfragen dar. Hier kann man Werte aus 2 Tabellen völlig frei verbinden.
Allerdings sind diese mitunter sehr langsam. Für ein UNION muss jede Abfrage die gleiche Anzahl an Feldern haben:

SELECT Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3
FROM Tabelle1
UNION
SELECT Tabelle2.Feld1, Tabelle2.Feld2, Tabelle2.Feld3
FROMTabelle2