2017-04-12 6 views
0

Ich bin sicher, ich vermisse etwas Vital hier, so dass alle Ratschläge willkommen sind. Ich habe eine Basistabelle, die wir Content_1 nennen und zwei weitere Tabellen namens Content_2 und Content_3. Was ich versuche zu tun ist, alle Ergebnisse von Tabelle_2 mit der ID aus Tabelle 1 zu vergleichen und zu dieser Ergebnismenge alle Ergebnisse von Tabelle_3 hinzuzufügen, die auch mit der ID aus Tabelle_1 übereinstimmen. Grundlegend eine ODER-Bedingung in den Endergebnissen zu haben - gebe alles aus Tabelle 2 zurück, die der ID aus Tabelle 1 entspricht ODER gebe alles aus Tabelle 3 zurück, die der ID aus Tabelle 1 entspricht. Allerdings sehe ich, dass keine Ergebnisse zurückgegeben werden Der erste Join und dann der zweite Join werden auf die Ergebnismenge angewendet, die nach dem ersten Join und nicht beim ersten Join zurückgegeben wird.MySql inneren Beitritt von 2 Tabellen

SELECT * FROM Content_1 
JOIN Content_2 ON Content_1.id = Content_2.id 
JOIN Content_3 ON Content_1.id = Content_3.id 
+0

Verwenden Sie einen 'LINKEN ÄUSSEREN JOIN' anstelle eines' INNEREN JOINS'. Dies wird dann sagen "Gib mir alle Ergebnisse von' content_1' und nur die Ergebnisse von 'content_2' und' content_3', die dieser Join-Bedingung entsprechen. " Zurzeit sagen Sie mit Ihrem 'INNER JOIN':" Geben Sie mir nur Datensätze, wenn beide dieser Join-Bedingungen Datensätze aus ihren jeweiligen Tabellen zurückgeben ". – JNevill

Antwort

1

Wahrscheinlich möchten Sie UNION anstelle von allen 3 Tabellen.

SELECT Col1, Col2 
FROM Content_1 
JOIN Content_2 ON Content_1.id = Content_2.id 
UNION 
SELECT Col1, Col2 
FROM Content_1 
JOIN Content_3 ON Content_1.id = Content_3.id 
+0

Danke für die Antwort, ich habe es geschafft, das Problem mit Links Joins und wo Bedingungen, aber Union war auch eine gangbare Option zu lösen. – tslid