0

我有 2 张桌子

T1

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

T2

ID1 | ID2 | message | timestamp

如果彼得给马克发消息,彼得是ID1,马克是ID2,如果马克给彼得发消息,马克是ID1,彼得是ID2,

我想从 T1 中为 ID1 和 ID2 选择图像

从 mark 到某人或从某人到 Mark 的 select ID1,ID2, message from T2 where ID1=2 OR ID2=2所有消息返回所有从 mark 发送或发送到 mark 的消息

如何在此查询中包含 ID1 和 ID2 的图片?

select ID1, ID2, message, image from T1, T2 where ID1=2 OR ID2=2 T1.ID=ID1将是错误的,因为我需要 UID1 和 uid2 的图像...

因此,可以显示结束标记消息或标记已发送消息的人的图片...

4

2 回答 2

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.

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-03T12:15:08.290 回答
0

您可以像这样在 SQL 中使用子查询

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

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

于 2013-03-03T12:24:29.470 回答