在mysql中编写此查询的问题(在论坛中标记读取消息)

时间:2009-06-08 10:13:23

标签: php sql mysql database

嘿。我正在写一个论坛,我有这个表标记特定用户阅读的消息:

`read_messages`(`message_id`,`user_id`)

消息表的简化版本:

`messages`(`id`,`forum_id`,`author_id`)

现在,我希望能够在从给定论坛的数据库中检索消息数据时添加一个变量,该变量将告诉我当前用户是否已阅读该消息。我知道如何使用2个查询执行此操作(第一个我检索所有消息,然后我检查每个消息,如果用户已经读过它们),但没有关于如何将它们连接在一起的线索。任何想法?

2 个答案:

答案 0 :(得分:2)

SELECT messages.*, read_messages.id as read_id
FROM messages 
LEFT OUTER JOIN read_messages 
   ON ( messages.id = read_messages.message_id AND read_messages.user_id  = [ USER ID ] )

如果read_id作为数字返回> 0而不是NULL,因此该消息已被读取,因为该用户read_messages中有相应的记录。

答案 1 :(得分:0)

听起来你是在外部加入之后,请查看Outer Joins Section的语法,它允许您从一个表和NULLS中选择值,而不存在这些值。