2015-03-31 37 views
0

一個新手的問​​題,可能是一個INNER JOIN與「AS」的聲明,但我不能算出它的有點...的MySQL如何選擇我需要什麼,最有可能的內部聯接

這是爲基於MYSQL的競爭應用程序。我想選擇兩個img_id1和img_id2的「img_title」。我無法弄清楚如何做到這一點,仍然可以看到其標題被分配給相關_id1或_id2。

我的表:

  • 比賽
    • comp_id
    • img_id1
    • img_id2
  • on_deck
    • img_id
    • img_title

期望的結果:
comp_id | img_id1 | img_title1 | img_id2 | img_title2

回答

0
select comp_id, img_id1, b.img_title as img_title1, 
img_id2, b2.img_title as img_title2 
from competitions a 
left outer join on_deck b on b.img_id = a.img_id1 
left outer join on_deck b2 on b2.img_id = a.img_id2 

開關讓外部聯接內部聯接,如果你想排除不具有兩個匹配img_ids

2

你需要爲每個圖像的加盟:

SELECT comp.comp_id, img1.img_id, img1.img_title, img2.img_id, img2.img_title 
FROM competitions comp 
INNER JOIN on_deck img1 ON img1.img_id = comp.img_id1 
INNER JOIN on_deck img2 ON img2.img_id = comp.img_id2 

LEFT JOIN如果img_id1img_id2可以NULL

+0

我已經做了左連接到蘇斯出遺漏/斷開的鏈接,但除此之外,你鍵入比我更快。:) – 2015-03-31 15:55:46

+0

我覺得他需要選擇只有一個競爭,使這個查詢是這裏的例子。 :) – 2015-03-31 15:59:15

0

該查詢應該給你你想要的結果的比賽行。這還假定comp.img_id1comp.img_id2從來NULL

SELECT comp.comp_id 
, comp.img_id1 
, deck1.img_title AS img_title1 
, comp.img_id2 
, deck2.img_title AS img_title2 
FROM competitions AS comp 
JOIN on_deck deck1 ON comp.img_id1 = deck1.img_id 
JOIN on_deck deck2 ON comp.img_id2 = deck2.img_id 

如果你有計劃在具有NULL或空字符串comp.img_id1和/或comp.img_id2領域,你需要做一些左聯接。