Объединение SQL-запросов для получения разных результатов по дате - PullRequest
1 голос
/ 02 февраля 2010

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

Одна таблица содержит игры /, а другая таблица содержит действия этих игр /.

Я пытаюсь показать недавние события пользователям 1) действия, предпринимаемые над играми, которые являются общедоступными (опубликованы) 2) когда новая игра создается и публикуется.

Итак, моя таблица действий имеет

actionId, gameid, userid, actiontype, lastupdate

Мой игровой стол имеет

gameid, startDate, createdby, published, lastupdate

В настоящее время у меня есть такой запрос (я надеюсь, что он упрощен).

SELECT actionId, actions.gameid, userid, actiontype, actions.lastupdate
FROM actions 
JOIN
 (
   SELECT games.gameid, startDate, createdby, published, games.lastupdate 
   FROM games 
   WHERE 
    published=1 AND 
    lastupdate>today-2
 ) 
 publishedGames on actions.gameid=games.gameid 
WHERE 
 actions.type IN (0,4,5,6,7) AND 
 actions.lastupdate>games.lastupdate and 
 published=1 OR 
 games.lastupdate>today-2 AND 
 published=1

Этот запрос ищет действия из опубликованных игр, в которых действие имело место после публикации игры. Это в значительной степени заботится о первой вещи, которую нужно показать.

Однако мне также нужно получить результаты

SELECT games.gameid, startDate, createdby, published, games.lastupdate
FROM games
WHERE
  published=1 AND 
  startDate>today-2

, чтобы я мог включить в список действий, когда будет опубликована новая игра.

Когда я запускаю запрос в том виде, в котором он написан, я получаю все actionids и их gameide, но у меня нет строки, которая показывает gameid, когда он был опубликован.

Я понимаю, что, возможно, мне нужно выполнить два отдельных запроса, а затем каким-то образом объединить послесловие результатов с php, но я также совершенно не знаю, с чего начать.

1 Ответ

0 голосов
/ 02 февраля 2010
select a.id, g.id, g.published ...
from actions a
join games g on on g.gameid = a.gameid
where g.published=1
and g.lastupdate > today - 2
and a.type IN (0,4,5,6,7)
and a.lastupdate > g.lastupdate 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...