Ich versuche, meinen Kopf um JOINS eingehüllt zu bekommen. Ich habe eine Vielzahl von Joins ohne Erfolg versucht.Abfrage 2 Tabellen basierend auf der dritten Haupttabelle
Betrachten Sie die folgenden Tabellen:
Allsongs
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | NULL | |
| Artist | varchar(100) | YES | | NULL | |
| Title | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
verschiedene Künstler Tabellen: zB Elvis, Beatles usw.
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | NULL | |
| Songid | int(11) | YES | | NULL | |
+--------+---------+------+-----+---------+-------+
Das songID Feld in den Künstler Tabellen ist identisch mit den allsongs .id Feld
Ich versuche eine Abfrage th zu erstellen die folgenden Abfragen in eine Abfrage bei beitreten
select s.title from allsongs s
join beatles b ON s.id = b.songid;
select s.title from allsongs s
join elvis e ON s.id = e.songid;
Ich dachte, das könnte funktionieren:
select s.title from allsongs s
join beatles b ON s.id = b.songid
join elvis e ON s.id = e.songid;
aber es gibt: Leeren Satz.
Wenn ich LEFT OUTER JOIN es tut, was ich will, solange ich die die Anzahl der Zeilen manuell
Ich hoffe, beschränke ich klar genug bin zu sein. Jede Hilfe wäre willkommen.
Dank
Ausgezeichnet. Dies funktioniert bis auf ein Problem. Es stellt sich heraus, dass einer der Titel bei beiden Künstlern war, folglich gab es nur einen von ihnen zurück. Würde es da einen Weg geben oder ist das einfach aufgrund der Tischstrukturen? – Pete
Ändern Sie es in "UNION ALL" anstelle von Union. Das wird doppelte Zeilen anzeigen. – Ilion