2017-04-26 4 views
0

Ich habe 2 Tabellen. Ich möchte alle Daten aus Tabelle1 und alle Daten aus Tabelle2 abrufen, wenn die ID Tabelle2 in Tabelle1 nicht null ist. Ich möchte 2 Tabellen, wenn der Benutzer 2 Adressen hat.Wie zu Tabelle2 beizutreten, wenn die Tabelle2 ID in Tabelle1 nicht null ist

tabelle1:
ID, Name, Telefon, table2id
table2id null oder die ID von table2 sein kann, wenn eine Zeile vorhanden

table2:
id, Adresse, Staat, Land

Ich habe diese Abfrage, aber es funktioniert nicht.

SELECT * FROM `table1` JOIN `table2` ON `table1`.`table2id` = `table2`.`id` WHERE `table1`.`id` = '2' AND `table1`.`table2id` IS NOT NULL 

Von dem, was ich gelesen habe, ich glaube, ich könnte eine Unter wählen muß, oder IF NOT NULL, aber ich bin nicht sicher, wie sie zu strukturieren. Irgendwelche Ideen?

+0

Duplikat von http://stackoverflow.com/questions/23582387/mysql-join-if-field-is-not-null – Bram

Antwort

1

Vielleicht ist Ihre Tabellenstruktur nicht korrekt. Es wäre besser für Sie die foreing Taste am Tisch 2 gesetzt, so können Sie N-Adressen zu jedem Datensatz in der Tabelle 1

wie dieses:

Table1: id, Name, Telefon
Tabelle2: ID, Adresse, Bundesland, Land, Tabelle1id.

Mit diesem können Sie eine LEFT JOIN verwenden, um alle Datensätze aus Tabelle1 auszuwählen, auch wenn es keine Adresse in Tabelle2 hat.

SELECT * 
FROM TABLE1 
LEFT JOIN TABLE2 ON (TABLE1.ID = TABLE2.TABLE1ID) 

Die Aufzeichnungen des SELECT Ergebnis, das Table2 Felder mit NULL-Wert muß nicht irgendeine Adresse.

+0

Danke. Ja, ich möchte mehrere Adressen für einen Benutzer haben. Ich habe mit den Schlüsseln nicht richtig darüber nachgedacht. – Cambo

0

Versuchen Sie dieses, es zu lösen:

SELECT * FROM table1 LEFT JOIN table2 ON table1.table2id = table2.id WHERE table1.id = '2'; 
+0

Danke für die Antwort, aber Filipes Antwort war, was ich wirklich tun musste. – Cambo

0

Sie müssen LEFT JOIN dafür verwenden, z.B .:

SELECT t1.id, t1.name, t1.phone, t2.address, t2.state, t2.country 
FROM table1 t1 LEFT JOIN table2 t2 ON t1.table2id = t2.id 
WHERE t1.id = 2; 

Es wird für t2.* Spalten Nullwerte zurück, wenn es keine passende Zeile ist.

Here's MySQL-Dokumentation für LEFT JOIN.

+0

Danke für die Antwort, aber Filipes Antwort war, was ich wirklich tun musste. – Cambo

Verwandte Themen