Fiddle hier passend: http://sqlfiddle.com/#!9/53d3c/2/0Join zwei Tabellen mehr IDs zu Namen
Ich habe zwei Tabellen, eine, das Mitglied Namen und ihre ID-Nummer. Lassen Sie sich, dass die Tabelle nennt Namen:
CREATE TABLE Names (
ID int,
Title text
);
INSERT INTO Names
VALUES (11,'Chad'),
(10,'Deb'),
(34,'Steph'),
(13,'Chris'),
(98,'Peter'),
(33,'Daniel'),
(78,'Christine'),
(53,'Yolanda')
;
Meine zweite Tabelle enthält Informationen zu treffen, wo jemand einen Coach und jemand ist ein Spieler. Jeder Eintrag ist eine separate Zeile (d. H. Meeting_ID 1 hat zwei Einträge, einen für den Coach, einen für den Teilnehmer). Außerdem gibt es eine Spaltenkennung, wenn diese Zeile für einen Trainer oder Spieler bestimmt ist.
CREATE TABLE Meeting_Data (
Meeting_ID int,
Player_ID int,
Coach_ID int,
field_id int
);
INSERT INTO Meeting_Data
VALUES (1,0,11,2),
(1,10,0,1),
(2,34,0,1),
(2,0,13,2),
(3,98,0,1),
(3,0,33,2),
(4,78,0,1),
(4,0,53,2)
;
Was ich versuche, eine Tabelle zu tun ist, erstellen, die jede Sitzung auf eine Zeile setzt, und legt dann die ID # s und Namen der Sitzung Menschen. Wenn ich dies versuche, bekomme ich eine Spalte, um erfolgreich zu ziehen und dann eine Spalte von (Null) -Werten.
SELECT Meeting_ID,
Max(CASE
WHEN field_id = 1 THEN Player_ID
END) AS Player_ID,
Max(CASE
WHEN field_id = 2 THEN Coach_ID
END) AS Coach_ID,
Player_Names.Title as Player_Names,
Coach_Names.Title as Coach_Names
FROM Meeting_Data
LEFT JOIN Names Player_Names
ON Player_ID = Player_Names.ID
LEFT JOIN Names Coach_Names
ON Coach_ID = Coach_Names.ID
GROUP BY Meeting_ID
was zur Folge hat:
| Meeting_ID | Player_ID | Coach_ID | Player_Names | Coach_Names |
|------------|-----------|----------|--------------|-------------|
| 1 | 10 | 11 | Deb | (null) |
| 2 | 34 | 13 | Steph | (null) |
| 3 | 98 | 33 | Peter | (null) |
| 4 | 78 | 53 | Christine | (null) |
Miles Sie ein Lebensretter sind! Vielen Dank! –