我有两个简单表格之间的关系如下:
Table USERS:
ID Name
100 User1
243 User2
681 User3
Table MSGS:
FromU ToUser Txt [... DTime]
243 100 Bla bla bla
100 243 Taaa
243 681 Bo bo bo
681 243 Mi mi miiii
681 100 Exemples
100 681 Very good
Relationship:
FromU -> ID (table USERS)
ToUser -> ID (table USERS)
如何将一个用户发送给另一个用户的所有消息以及用户从其他用户和用户的名字回复的答案,我徘徊。
例如,如果我想获取User2发送的所有消息并且消息User2返回,那么我需要这些数据:
FromU Name ToUser Name Txt
243 User2 100 User1 Bla bla bla
100 User1 243 User2 Taaa ...
243 User2 681 User3 Bo bo bo
681 User3 243 User2 Mi mi miiii
我无法获得用户的姓名。有了这个SQL
SELECT FromU, ToUser, Txt
FROM msgs
WHERE FromU = 243 OR ToUser = 243
ORDER BY DTime ASC
我明白了:
243 100 Bla bla bla
100 243 Taaa ...
243 681 Bo bo bo
681 243 Mi mi miiii
有什么想法吗?我使用MariaDB。提前谢谢!
答案 0 :(得分:0)
您应该使用与用户的连接(在示例中有两个joi以获取两个名称)
"SELECT m.FromU, m.ToUser, m.Txt, u1.Name as from_name, u2.name as to_name
FROM msgs m
INNER JOIN user u1 on m.FromU = u1.id
INNER JOIN user u2 on m.ToU = u2.id
WHERE m.FromU = 243 OR m.ToUser = 243
ORDER BY m.DTime ASC"
答案 1 :(得分:0)
我从未使用过MariaDB,但在TSSQL中你会做类似的事情:
SELECT from.Name as FromUser, to.Name, Txt FROM MSGS INNER JOIN USERS AS from ON from.ID = FromU INNER JOIN USERS AS to ON to.ID = ToUser WHERE FromU = 243 OR ToUser =243
希望它有所帮助。