2016-09-13 2 views
0

Tabellen:JOIN Funktionalität zwischen mehreren Tabellen

Kunde

CID Name 
1  A 
2  B 
3  C 
4  D 
5  E 
6..(And so on) 

Besuchen

VID CID type 
1 1 Med 
2 3 Non 
3 2 Non 
4 6 Med 
5 4 Med 
6..(And so on) 

Zahlung

PID CID amount 
1  1  10 
2  1  20 
3  2  30 
4  2  40 
5  3  50 
6..(And so on) 

gewünschte Ausgabe:

CID Name type amount 
1  A  Med 10 
1  A  Med 20 
4  D  Med NULL 
(And so on..) 

Abfrage:

SELECT DISTINCT 
C.client_id 
,C.name 
,V.type 
,P.payment 

FROM Clients C 
INNER JOIN Visit V 
    ON C.cid=V.cid 
LEFT JOIN Payment P 
    ON V.cid=P.cid 

ich JOIN einen LEFT verwendet, weil ich will sehen, wer Zahlungen und wer nicht.

Frage: Ziehen LINKS (oder Outer Joins) Daten auf der Basis der gemeinsamen IDs in der CID der linken Tabelle, die aus vorangegangenen INNER JOINS resultieren (die gemeinsame Ergebnismenge)? Oder betrachten sie ALLE IDs in der linken Tabelle und ignorieren die INNER JOINS Ergebnisse insgesamt? Ich möchte nur Zahlungsdetails der Kunden, die in den inneren Verbindungen und nicht außerhalb vorhanden sind.

Antwort

3

Die LEFT JOIN wird nur in Zeilen ausgeführt, die die INNER JOIN zurückgibt, oder die common data set, wie Sie erwähnen.

, dass unabhängig davon, was die LEFT JOIN zurückkehren wird, wird die INNER JOIN die Ergebnismenge auf Visit V ON C.cid=V.cid

Dieses Venn-Diagramm zeigt die Ergebnisse auf Basis begrenzen gehen, dass der blaue Bereich ausgewählt wird, ist Ihre Daten, die sein werden, ist zurückgekommen. Die Reihenfolge der Joins spielt keine Rolle.

enter image description here

+0

ist, warum die Reihenfolge, in der sie auch zusammen Angelegenheiten verwendet? LINKS VERBINDEN in der Art und Weise, auf die ich versuche, Ergebnisse zu erhalten, sollte nach all den INNEREN VERBINDUNGEN sein? – AS91

+0

Angelegenheiten in dem Sinne, wie sie durch die "ON" -Klausel definiert sind, und von was zu welcher Tabelle, aber die Reihenfolge der Erscheinung in der Abfrage ist irrelevant, nur die logische Übereinstimmung der Datensätze ist. –

+0

@AmulyaSharma Antwort aktualisiert, mit hoffentlich hilfreichem Diagramm. – GavinCattell