我如何构建这个复杂的SQL?

时间:2013-03-03 12:12:21

标签: mysql sql join

我有2张桌子

T1

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

T2

ID1 | ID2 | message | timestamp

如果Peter向Mark发送消息,则Peter为ID1且mark为ID2 如果Mark向Peter发送消息,则Mark为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 个答案:

答案 0 :(得分: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.

要进一步了解联接,请访问以下链接:

答案 1 :(得分:0)

您可以在SQL中使用子查询

从T1中选择图像,其中id为(选择ID1,ID2,来自T2的消息,其中ID1 = 2或ID2 = 2)

我不确定在之后使用,但你可以尝试使用IN,ANY,ALL ...