gpt4 book ai didi

mysql - Facebook 风格消息 : Efficient Query

转载 作者:行者123 更新时间:2023-11-29 09:09:10 26 4
gpt4 key购买 nike

users tbl:
id
username
first_name
last_name
email_address

messages tbl:
id
date_sent
title
content
status

message_relation tbl:
id
message_id
sender_id
receiver_id

在给定这些表的情况下,向选定用户查询消息的最有效方法是什么?换句话说,我想列出 userA 的“收件箱”中的所有邮件

其次,您建议如何处理需要从管理员发送给每个人的全局消息?

最佳答案

我想这就是你要找的..

SELECT [WHATEVER] FROM 
messages
INNER JOIN message_relation
ON (messages.id = message_relation.message_id AND message_relation.receiver_id = $id)

这可以有效地满足您的要求。如果您还想选择任一用户的字段,则可以将 Receiver_ID 联接到 User_ID 来获得该字段。

如果您需要全局/管理消息,建议的表格设置:

Messages (Message_ID, [Fields common to all messages, e.g. Message_Content, Message_Timestamp, etc])
Global_Messages (Global_Message_ID, Message_ID, [any fields specific to Global_Messages])
User_Messages (User_Message_ID, Message_ID, [any fields specific to User_Messages])
User_Message_Relations (User_Message_Relations_ID, User_Message_ID, Sender_ID, Receiver_ID)

然后,要查询收件箱,如下所示:

SELECT [WHATEVER] FROM
Messages

LEFT JOIN (Global_Messages)
ON (Messages.Message_ID = Global_Messages.Message_ID)

LEFT JOIN (User_Messages)
ON (Messages.Message_ID = User_Messages.Message_ID)

LEFT JOIN (User_Message_Relations)
ON (User_Messages.User_Message_ID = User_Message_Relations.User_Message_ID AND User_Message_Relations.Receiver_ID = $uid)

这将为您提供一个结果,您可以循环遍历以获取用户的整个收件箱。

关于mysql - Facebook 风格消息 : Efficient Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148324/

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