我有 3 个 MySQL 表,即 chat_comments、chat_friends 和 user_details,我想显示一个朋友列表。
我的桌子:
chat_comments(comment_id,comment,user_id,user_id2,date_added)
chat_friends(user_id,user_id2,approved)
user_details(user_id, mainimage_id, fullname)
为此,我需要一个返回所需字段 ( u.mainimage_id
, u.fullname
, b.comment
, b.user_id
) 的查询,以便我可以遍历列表以显示表格。
到目前为止的 SQL(来自@Andriy M 的帮助):
SELECT
cc.comment,
cc.date_added,
u.fullname,
u.mainimage_id
FROM
user_details u
LEFT JOIN
chat_comments cc
INNER JOIN (
SELECT
user_id,
MAX(comment_id) AS maxcomment
FROM chat_comments WHERE user_id=2020 OR user_id2=2020
GROUP BY user_id
) a ON a.user_id = cc.user_id
AND a.maxcomment = cc.comment_id
ON a.user_id = u.user_id
WHERE u.user_id IN (
SELECT user_id2
FROM chat_friends
WHERE user_id = 2020
AND approved = 1
)
上面的查询返回登录用户的朋友在对话中最后发表的评论,而不是登录用户和他/她的朋友之间的最后评论,无论是谁发表的。
我希望它单独返回登录用户和他们的朋友之间的最后一条评论,无论是谁发表的。在chat_messages
表中,user_id
是发送者,user_id2
是接收者。希望它有意义吗?