MySQL запрос на «Недавние действия» - PullRequest
0 голосов
/ 05 марта 2011

Я создаю сайт, на котором пользователи могут создавать фотоальбомы, создавать события, загружать видео и т. Д. Я хочу сделать список недавних действий данного пользователя.Вот небольшая схема моих таблиц:

**videos**
id
user_id
uploaded

**albums**
id
user_id
created
updated

**comments**
id
user_id
date

Конечно, в таблице есть больше полей, а также таблиц, но их должно быть достаточно, чтобы помочь мне построить запрос.

Теперь то, что я хочу вывести, это дата, и идентификатор для данного действия с этими полями:

user_id, video_id, album_id, comment_id, date

Конечно, должно быть выбрано только одно из полей идентификатора, остальные должны быть просто нулевыми,и дата должна быть "загружен" для видео, "обновлен" для альбомов и "дата" для комментариев.User_id должен быть выбран в запросе в операторе where, чтобы вы получили активность для данного пользователя.

Я пытался создать этот запрос, но не смог, отказавшись от использования COALESCE для выбора различных временных отметок, ноЯ просто не могу обойти это.

1 Ответ

1 голос
/ 05 марта 2011

Что-то вроде этого?

(select user_id, id as video_id, NULL as album_id, NULL as comment_id, uploaded as date from videos)
UNION
(select user_id, NULL, id, NULL, uploaded from albums)
UNION
(select user_id, NULL, NULL, id, date from comments)

Вы можете применить условие ORDER BY после всего этого, но WHERE условия гораздо больше ставятся внутри парентез каждой отдельной SELECT.

...