2012-02-02 45 views
11

Tôi đang cố gắng tìm hiểu cách kết hợp nhiều cột từ một bảng vào một cột từ một bảng khác.Tham gia nhiều cột từ một bảng sang cột đơn từ một bảng khác

Đây là cấu trúc bảng của tôi ở dạng đơn giản nhất của nó:

đội

id | team_name | 
1 | teamA | 
2 | teamB | 
3 | teamC | 
4 | teamD | 

nghề

id | team_1 (FK to teams.id) | team_2 (FK to teams.id) | 
1 |   1    |    2   | 
2 |   3    |    4   | 

Đây là SQL hiện tại của tôi mà tham gia trades.team_1 để đội. id:

SELECT teams.team_name AS team1, teams.team_name AS team2, trades.team_1, trades.team_2 
FROM teams 
JOIN trades ON (trades.team_1 = teams.id); 

Câu hỏi của tôi là, làm cách nào để tạo một liên kết thứ hai cũng tham gia trades.team_2 với trades.id?

Điều này có nghĩa cả hai trades.team_1 VÀ trades.team_2 sẽ được tham gia để trades.id

Các kết quả tôi muốn lấy lại sẽ là:

team1 | team2 | team_1 | team_2 | 
teamA | teamB | 1  |  2 | 
teamC | teamD | 3  |  4 | 

Trả lời

31

Như thế này:

select t1.team_name as team1, t2.team_name as team2, t.team_1, t.team_2 
from trades t 
inner join teams t1 on t1.id = t.team_1 
inner join teams t2 on t2.id = t.team_2; 
+3

Jeez, 10 giây ngoài và chúng tôi đã chết tiệt gần câu trả lời tương tự. =) – Crontab

+0

Mọi người trả lời đá. Nghiêm túc, cảm ơn các bạn vì đã trả lời rất nhanh. Tất cả các câu trả lời đều tương tự nhau và tất cả sẽ thực hiện thủ thuật. Cảm ơn một lần nữa folks! – Critter

+0

cảm ơn sự giúp đỡ của bạn khi cần – spr

2

Bạn cần tham gia hai lần:

SELECT t1.team_name as team1, t2.team_name as team2, trades.team_t, trades.team_2 
FROM teams t1, teams t2, trades 
WHERE t1.id = trades.team_1 and t2.id = trades.team_2 
5

Thử tham gia lại bảng nhóm nhưng sử dụng hai bí danh khác nhau:

SELECT 
    teams1.team_name AS team1, 
    teams2.team_name AS team2, 
    trades.team_1, 
    trades.team_2 
FROM trades 
JOIN teams AS teams1 ON trades.team_1 = teams1.id 
JOIN teams AS teams2 ON trades.team_2 = teams2.id 
9
SELECT t1.team_name AS team1, t2.team_name AS t2, tr.team_1, tr.team_2 
FROM trades tr 
INNER JOIN teams t1 ON t1.id = tr.team_1 
INNER JOIN teams t2 ON t2.id = tr.team_2 
Các vấn đề liên quan