it-swarm.com.de

Verknüpfen mehrerer Tabellen in SQL

Kann jemand mich über Beitritte erklären?

Inner Join wählt allgemeine Daten basierend auf der Bedingung "Where" aus.

Der Left-Outer-Join wählt alle Daten von Left aus, unabhängig von Common, nimmt aber Common-Daten aus der rechten Tabelle und umgekehrt für Right-Outer. 

Ich kenne die Grundlagen, aber es bleibt eine Frage, wenn es darum geht, mehr als 5, 8, 10 Tabellen zu verbinden. 

Angenommen, ich habe 10 Tische, die ich beitreten kann. Wenn ich einen inneren Join mit den ersten 5 Tabellen habe und nun versuche, einen linken Join mit der 6. Tabelle anzuwenden, wie funktioniert die Abfrage jetzt? 

Ich meine damit jetzt, dass die Ergebnismenge der ersten 5 Tabellen als linke Tabelle genommen wird und die sechste als rechte Tabelle betrachtet wird. Oder nur der fünfte Tisch wird als links und der sechste als richtig betrachtet? Bitte helfen Sie mir dabei.

14
Prince

Beim Zusammenfügen mehrerer Tabellen bildet die Ausgabe jedes Joins logisch eine virtuelle Tabelle, die in den nächsten Join übergeht.

In dem Beispiel in Ihrer Frage würde das zusammengesetzte Ergebnis der Verbindung der ersten 5 Tabellen als linke Tabelle behandelt.

Siehe Itzik Ben-Gans Logical Query Processing Poster für mehr darüber. 

Die an den Joins beteiligten virtuellen Tabellen können durch Positionieren der ON-Klausel gesteuert werden. Zum Beispiel

SELECT *
FROM   T1
       INNER JOIN T2
         ON T2.C = T1.C
       INNER JOIN T3
                  LEFT JOIN T4
                    ON T4.C = T3.C
         ON T3.C = T2.C 

ist äquivalent zu (T1 Inner Join T2) Inner Join (T3 Left Join T4)

20
Martin Smith

Es ist hilfreich, an JOIN nacheinander zu denken, so dass die erstere richtig ist.

SELECT *
  FROM a
  INNER JOIN b ON b.a = a.id
  INNER JOIN c ON c.b = b.id
  LEFT JOIN d ON d.c = c.id
  LEFT JOIN e ON e.d = d.id

Dies wären alle Felder aus a und b und c, bei denen alle ON-Kriterien übereinstimmen, zuzüglich der Werte aus d, bei denen die Kriterien zutreffen, sowie alle Inhalte von e, bei denen alle Kriterien übereinstimmen.

Ich weiß, dass RIGHT JOIN absolut akzeptabel ist, aber ich habe festgestellt, dass dies unnötig ist - ich füge fast immer nur Dinge von links nach rechts zusammen. 

6
Colselaw

> Einfacher INNER JOIN VIEW-Code ...

CREATE VIEW room_view
AS SELECT a.*,b.*
FROM j4_booking a INNER JOIN j4_scheduling b
on a.room_id = b.room_id;
1
Manu R S

Sie können sich wie folgt bewerben.

select a.*,b.*,c.*,d.*,e.*  
from [DatabaseName].[Table_a] a 
INNER JOIN [DatabaseName].[Table_b] b ON a.id = b.id 
INNER JOIN [DatabaseName].[Table_c] c ON b.id=c.id 
INNER JOIN [DatabaseName].[Table_d] d on c.id=d.id 
INNER JOIN [DatabaseName].[Table_e] e on d.id=e.id where a.con=5  and 
b.con=6

An Stelle von. * Und in Where-Zustand können Sie hier die Spalte (Ablage) anzeigen, die Sie mögen und die entsprechende Bedingung in Where-Zustand. Sie können weitere Tabellen und Datenbanken nach Ihrer Wahl einfügen. Beachten Sie jedoch, dass Sie den Datenbanknamen und den Aliasnamen angeben müssen, wenn Sie in einer anderen Datenbank arbeiten. 

0
Bha15