gpt4 book ai didi

php - SQL:显示来自数据库的最后消息

转载 作者:行者123 更新时间:2023-11-29 00:25:37 25 4
gpt4 key购买 nike

我遇到了 SQL 查询问题。 (对不起,我的英语太差了)

我正在为一个网站开发一个私有(private)消息系统,我有这样的数据库:

线程

| 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)

最佳答案

你可以这样尝试:-

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:

关于php - SQL:显示来自数据库的最后消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com