2013-03-03 62 views
0

我有2個表如何構建這個複雜的SQL?

T1

ID | Name | IMAGE 
------------------------ 
1 Peter pic_111.jpg 
2 Mark pic222.jpg 

T2

ID1 | ID2 | message | timestamp 

如果彼得發送將消息標記,彼得ID1和標記ID2 並且如果標記發送彼得將消息標記被ID1和peter ID2,

我想從T1中爲ID1和ID2選擇圖像

從標記到某人或從別人的所有郵件將慶祝 select ID1,ID2, message from T2 where ID1=2 OR ID2=2返回所有的消息從發送或標記

怎樣包括ID1和ID2圖片此查詢?

select ID1, ID2, message, image from T1, T2 where ID1=2 OR ID2=2 T1.ID=ID1將是錯誤的,因爲我需要圖像UID1和UID2 ...

因此,這將有可能展現的人的圖片衛生組織年底將郵件標記或誰大關發送消息...

回答

2

您需要兩次加入T1才能獲得T2上每個發件人的相應ID

SELECT a.*, 
     b.Image as ID1IMAGE, -- alias is needed to avoid ambiguous columns 
     c.Image as ID2Image 
FROM T2 a 
     INNER JOIN T1 b 
      ON a.ID1 = b.ID 
     INNER JOIN T1 c 
      ON a.ID2 = c.ID 
WHERE 2 IN (a.ID1, a.ID2) -- the condition can be done like this. 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+0

Thanks!正是我在找的! – user2128758 2013-03-03 16:37:58

+0

不客氣':D' – 2013-03-03 16:38:38

0

您可以使用子查詢的SQL像這樣

選擇圖片T1其中id in(選擇ID1,ID2,來自T2的消息,其中ID1 = 2或ID2 = 2)

我不確定在哪裏使用但您可以嘗試使用IN,ANY,ALL ...