我有 2 张 table
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
从马克到某人或从某人到马克的所有消息
选择 ID1,ID2,来自 T2 的消息,其中 ID1=2 OR ID2=2
返回从标记发送或发送到标记的所有消息
如何在此查询中包含 ID1 和 ID2 的图片?
从 T1、T2 选择 ID1、ID2、消息、图像,其中 ID1=2 OR ID2=2 T1.ID=ID1
将是错误的,因为我需要 UID1 和 uid2 的图像...
因此可以显示结束标记消息或标记发送消息的人的图片...
最佳答案
您需要加入 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.
要进一步了解有关联接的更多知识,请访问以下链接:
关于mysql - 如何构建这个复杂的sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185504/