gpt4 book ai didi

php - 除了左连接和联合mysql查询之外,从两个表中选择最新条目

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

我有三个记录对话事件的表和一个包含用户信息的表

我正在尝试将一个查询放在一起,以总结用户对话(例如显示最后一条评论的收件箱)

我的表格设置如下

users
---
company | contact_person | pic_small

alerts
---
comment_id | user_id | poster_id | timestamp

activity
---
comment_id | user_id | comment | timestamp

comments
---
comment_id | user_id | comment | timestamp

当用户最初进行联系时,用户(发送者和接收者)的时间戳、comment_id 和 id 会插入警报表中。 user_id、comment_id、时间戳和实际评论也会插入到事件表中。

一旦对话开始,所有评论(comment_id、user_id、comment、timestamp)都会插入到评论表中。

如上所述,我想做的是总结用户事件,使其看起来像他们的收件箱。

我提出了以下查询,它为我提供了登录用户接收或发送的所有对话事件的用户 ID、评论 ID 和用户详细信息。

            SELECT alerts.comment_id,
alerts.user_id,
alerts.poster_id,
alerts.timestamp,
users.contact_person,
users.company,
users.pic_small
FROM alerts
LEFT JOIN users ON users.user_id = alerts.user_id
WHERE alerts.user_id = %s
GROUP BY alerts.comment_id
UNION
SELECT alerts.comment_id,
alerts.user_id,
alerts.poster_id,
alerts.timestamp,
users.contact_person,
users.company,
users.pic_small
FROM alerts
LEFT JOIN users ON users.user_id = alerts.poster_id
WHERE alerts.user_id = %s
GROUP BY alerts.comment_id
ORDER BY TIMESTAMP DESC

我所坚持的部分是从事件表或评论表(可能是其中之一)获取最后一条评论(具有最新时间戳的评论)。如果需要,很乐意完全更改上述查询。

下面是我想要实现的目标,我只想查看已联系过我或我已联系过的人的用户详细信息 - 而不是我自己的收件箱中的详细信息(如果需要,我可以使用 php 执行此操作) -不过,最后一条评论是否是我的并不重要。

enter image description here

最佳答案

我仍然不清楚你为什么使用 union。

您可以通过以下查询获取最新评论,如果您想加入其他 user_id 的其他结果,那么您可以以相同的方式合并这些结果,或者如果您需要不同的结果,请告诉我。

SELECT 
comment_id,comment, user_id,poster_id,TIMESTAMP, contact_person,company,pic_small
FROM
(SELECT
alerts.comment_id,alerts.user_id,alerts.poster_id,alerts.timestamp,users.contact_person,users.company,users.pic_small,act.comment
FROM alerts
JOIN activity act
ON act.comment_id=alerts.comment_id
LEFT JOIN users ON users.user_id = alerts.user_id
WHERE alerts.user_id = %s
ORDER BY act.timestamp DESC) a
GROUP BY comment_id;

关于php - 除了左连接和联合mysql查询之外,从两个表中选择最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366138/

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