2017-05-09 127 views
0

我有兩個表:Livestream和Team。引用相同列的兩個外鍵

媒體直播:

id_livestream int primary key 

id_team1 int 

id_team2 int 

//我已經提到這兩列到球隊id_team列

團隊:

id_team int primary key 

name_team varchar(40) 

image_team varchar(255) 

我想從球隊選擇name_team對於Livestream中的兩個參考列.. a我想示例如下:

id_team1 |團隊名稱| | team1的圖片| id_team2 |團隊名稱2 | TEAM2的圖像

回答

2

您可以生成你想要通過簡單地做兩聯接從Livestream表到Team表輸出:

SELECT 
    lm.id_team1, 
    t1.name_team AS name_team_1, 
    t1.image_team AS image_team_1, 
    lm.id_team2, 
    t2.name_team AS name_team_2, 
    t2.image_team AS image_team_2 
FROM Livestream lm 
INNER JOIN Team t1 
    ON lm.id_team1 = t1.id_team 
INNER JOIN Team t2 
    ON lm.id_team2 = t2.id_team 

我這裏假設出現在Livestream每一支球隊都會有一個條目某處Team表。如果不是這種情況,並且您不希望NULL值出現在結果集中,那麼您可以切換到使用LEFT JOIN以及COALESCE()

+0

非常感謝@Tim它完美 –

+0

我這樣做,我不得不等待10分鐘重新標記一個正確的答案:) 但是對不起,我要問的東西更多: 設s假設我有一個子表命名Livestream_details引用直播 我希望如果我自動刪除Livestream中的一行以從Livestream_details中刪除其引用 我應該在刪除級聯上使用哪個位置? –

+0

這聽起來像一個完全不同的問題,所以我不會在評論部分回答它。您可能想問一個新問題,但是「ON DELETE CASCADE」聽起來像是一個選項。 –

1

試試這個:

SELECT 
    ls.id_team1, 
    t1.name_team AS name_team_1, 
    t1.image_team AS image_team_1, 
    ls.id_team2, 
    t2.name_team AS name_team_2, 
    t2.image_team AS image_team_2 
FROM Livestream ls 
INNER JOIN Team t1 
    ON ls.id_team1 = t1.id_team 
INNER JOIN Team t2 
    ON ls.id_team2 = t2.id_team 

內與Team的伎倆參加兩次。

相關問題