我的SQL查询有问题。 (对不起,我的英语太差了)
我正在为网站开发一个私人消息系统,我有这样的数据库:
螺纹
| ID | TITLE |
user_x_thread
| ID | ID_THREAD | ID_USER |
讯息
| ID | ID_THREAD | ID_USER | MESSAGE | TIMESTAMP |
在主题中有一个主题列表
在 user_x_thread 中,每个线程都有一个用户列表。 即。在线程#1中有用户#2,#3
最后,在消息中,有一个为每个帖子发送的消息列表。
我想显示用户@Alex签名的所有主题,按其上一条消息排序。
示例
螺纹
| ID | TITLE | | #1 | Me and Marta | | #2 | Marta and John | | #3 | Me and John | | #4 | Me, Marta and John |
user_x_thread
| ID | ID_THREAD | ID_USER | | 1 | #1 | Alex | | 2 | #1 | Marta | | 3 | #2 | Marta | | 4 | #2 | John | | 5 | #3 | Alex | | 6 | #3 | John | | 7 | #4 | Alex | | 8 | #4 | Marta | | 9 | #4 | John |
@的消息
| ID | ID_THREAD | ID_USER | MESSAGE | TIMESTAMP | | 1 | #1 | Alex | Lorem ipsum | 21:35:45 | | 2 | #2 | Marta | Alex can't see this message | 21:35:58 | | 3 | #3 | John | Hello. | 21:36:10 | | 4 | #1 | Marta | Demo. | 21:36:35 | | 5 | #4 | John | I like blue | 21:36:47 |
嗨Marta,您已登录:(按收到的最后一条消息排序)
[#4]我,玛塔和约翰(21:36:47)
[#1]我和玛塔(21:36:35)
[#3]我和玛塔(21:36:10)
答案 0 :(得分:1)
你可以这样试试: -
SELECT TD.TITLE,MS.MESSAGE,MS.TIMESTAMP from
THREAD TD
JOIN user_x_thread UXT ON TD.ID=UXT.ID_THREAD
JOIN Messages MS ON MS.ID_THREAD=UXT.ID_THREAD
WHERE UXT.ID=@userid//say 2 or 3
GROUP BY TD.ID,TD.TITLE,MS.MESSAGE,MS.TIMESTAMP
ORDER BY MS.TIMESTAMP DESC
@userid是您记录的用户ID:
答案 1 :(得分:0)
试试这个......
Select * from thread t inner join
user_x_thread ut on t.ID= ut.ID_THREAD inner join
messages m on m.ID_THREAD=ut.ID_THREAD
where ut.ID_USER= user #2
group by t.ID
order by m.ID desc
在用户#2处传递ID_USER的值