2013-03-03 4 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 дважды, чтобы получить ID для каждого отправителя на T2.

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

Спасибо! Только то, что я искал! – user2128758

+0

приветствуется ': D' –

0

Вы можете использовать вспомогательный запрос в SQL, как этот

выберите изображение из T1, где id в (выберите ID1, ID2, сообщение от T2, где ID1 = 2 ИЛИ ID2 = 2)

Я не уверен в использовании после, но вы можете попробовать использовать IN, ANY, ALL ...