我有一个这样的表,可以在玩家之间存储私人消息
id int(11)
userid int(11)
type int(1)
global tinyint(1)
subject varchar(55)
content text
receiver_id int(11)
allianceID int(11)
create_date datetime
read_date datetime
现在,当用户选择从收件箱中删除邮件时,我实际上并不想从数据库中删除邮件。我有一个名为messages_hidden
的单独表格,其结构如下
userid int(11)
message_id int(11)
此messages_hidden
表存储了他们的用户ID以及他们删除的相应消息"来自他们的收件箱所以它不再显示。
现在,我的查询是,在登录后,从数据库中提取所有消息以显示给他们(查询的某些部分因长度而被剪断)。
SELECT
msg.id,msg.type, msg.subject, msg.content, DATE_FORMAT(msg.create_date, '%b %D, %Y') as create_date,
IF(read_date > create_date, 1, 0) AS hasRead, sender.id AS sender_id, sender.username AS sender_username, receiver.id AS receiver_id, receiver.username AS receiver_username
FROM messages AS msg
LEFT JOIN users AS sender ON msg.userid = sender.id
LEFT JOIN users AS receiver ON msg.receiver_id = receiver.id
WHERE (msg.receiver_id = ? OR msg.userid = ? OR msg.global = 1) ORDER BY create_date DESC
此查询目前工作正常,但如何加入messages_hidden
并仅提取尚未删除的邮件"还是由用户隐藏?
我希望我能很好地解释我的问题。如果你不清楚我的问题的某一部分,请随时问。谢谢!