2013-05-20 53 views
0

我有兩個表:一個是d_sms,另一個是d_image表。每個sms_id都有兩個圖像:第一個是主圖像,第二個是提供圖像。 我想通過image_id和image_offer_id選擇這些圖像。我給出兩個圖像的問題,但兩行。我需要選擇一行圖片和offer_image。怎麼做?在兩個不同的字段中選擇多行作爲一個行名稱by MySQL

此代碼給我兩行

SELECT d_sms.* 
    , d_image.* 
     FROM 
      d_sms 
     INNER JOIN d_image 
     ON d_sms.image_id = d_image.id 
     or d_sms.offer_image_id = d_image.id 
+0

如果你在[fiddle](http://www.sqlfiddle.com)中放入了一些數據,我很樂意爲你提供幫助。 – hd1

+0

你怎麼知道哪一個是'第一',哪一個是'第二'? – Randy

+0

這裏的基本答案是,您將圖像表中的鏈接兩次鏈接到相同的查詢 - 但是您沒有提供足夠的信息或示例數據來實際幫助。 – Randy

回答

3

我認爲最簡單的方法就是做兩個獨立的連接:

select d_sms.*, i.*, oi.* 
from d_sms left outer join 
    d_image i 
    on d_sms.image_id = i.id left outer join 
    d_image oi 
    on d_sms.offer_image_id = oi.id; 

注意:您想從oi選擇個別字段和i並給他們不同的名字。

+0

同意兩個單獨的連接;儘管如此,他們還不清楚他們是否需要LOJ。 –

+0

@JonathanLeffler。 。 。我只是想小心沒有兩個圖像的情況。 –

+0

選擇d_sms。*,I *,OI。*, i.raw_name爲x, oi.raw_name從d_sms XX 左外連接 d_image我 上d_sms.image_id = i.id左外連接 d_image oi on d_sms.offer_image_id = oi.id; – user1080247

1
select s.id, i.imag, i2.imag from d_sms s 
inner join d_image i on s.image_id = i.imageid 
inner join d_image i2 on s.offer_image_id = i2.imageid 

同意Randy關於這兩個連接。如果兩個圖像都存在,那麼內連接可能會更有效率。

相關問題