Проблема написания этого запроса в mysql (пометка прочитанных сообщений на форуме) - PullRequest
0 голосов
/ 08 июня 2009

Эй. я пишу форум, и у меня есть эта таблица, которая помечает сообщения, прочитанные конкретным пользователем:

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

упрощенная версия таблицы сообщений:

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

Теперь я хочу, чтобы при получении данных сообщения из базы данных для данного форума я мог добавить переменную, которая сообщит мне, прочитал ли текущий пользователь это сообщение или нет. я знаю, как сделать это с 2 запросами (1-й я получаю все сообщения, затем я проверяю для каждого из них, прочитал ли пользователь их), но не знаю, как их объединить. есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 июня 2009
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 имеется соответствующая запись.

0 голосов
/ 08 июня 2009

Звучит так, как будто вы после Внешнего соединения. Проверьте секцию синтаксиса Внешние соединения , которая позволяет вам выбирать все значения из одной таблицы и NULLS, если значения не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...