2016-07-09 10 views
0

Ich habe
Abfrage 2 Tabellen mit links, dass id beitreten nicht in der 3. Tabelle existieren

table1 table2  table3 

id   id   id 
name  table1id  customerid 
      table3id 

Wie kann ich die table1.name Beitritt table2 wo customerid = someid holen und table3id existieren nicht in table2

+0

Beispieldaten und gewünschte Ergebnisse würden verdeutlichen, was Sie tun möchten. –

+0

Sebastian, ich habe deine Bearbeitung abgelehnt, weil das die LINKEN JOINS INNER JOINs so machen würde, wenn du willst, dass etwas anderes passiert. Wie Gordon erwähnt vielleicht könnten Sie einige Beispieldaten und ein erwartetes Ergebnis hinzufügen, so dass wir klarer sehen können, was Sie wollen – Matt

Antwort

1
SELECT 
     t1.id 
     t1.name 
    FROM 
     Table1 t1 
     LEFT JOIN Table2 t2 
     on t1.id = t2.table1id 
     LEFT JOIN Table3 t3 
     on t2.table3id = t3.id 
     AND t3.customerid = 93 
    WHERE 
     t3.id IS NULL 
+0

Das funktioniert gut und von t1 habe ich customerid auch ich werde es mit t1.customerid = id und seine working.Thank Sie –

+0

????? Ich bin ein wenig verloren ... warten Sie haben die Customerid in die Where-Klausel? Wenn du das tust, wird es das LINKE VERBINDEN als INNERES VERBINDEN behandeln, also muss es in die on Bedingung gehen, ich habe die Antwort für dich aktualisiert. – Matt

+0

Sie erhalten Zeilen in Tabelle1 und Tabelle2, die keiner Zeile in Tabelle3 zugeordnet sind. Dies bedeutet, dass die Suche nach einer bestimmten Zeile in Tabelle 3 als Teil dieser Abfrage wahrscheinlich nicht das bedeutet, was Sie möglicherweise meinen, dass dies bedeutet. –

0
SELECT table1.name 
INNER JOIN table2 ON table1.id = table2.table1id 
WHERE table2.id NOT IN (SELECT id FROM table3) 
+0

table2.id ist nicht in Tabelle 3 eher table3's ID ist bei table2.table3id. Auch EXISTS sollten besser funktionieren als IN. Außerdem sollten Sie nachsehen, wenn NULL Teil der Ergebnismenge in IN ist, es werden alle Datensätze zurückgegeben, weil NULL unbekannt ist. – Matt

Verwandte Themen