合并SQL查询以按日期获取不同的结果

时间:2010-02-02 00:47:31

标签: php mysql merge

我正在尝试构建“最近事件”Feed并且似乎无法使我的查询正确,或者弄清楚如何将两个查询的结果合并以按日期排序。

一张桌子保存游戏/,另一张桌子保存这些游戏的动作/。

我正在尝试让最近的事件向用户展示 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

所以我可以在动作列表中包含新游戏发布时的内容。

当我运行查询时,我已经写完了所有的动作,以及它们的游戏,但我没有得到一行显示游戏发布时的游戏。

据我所知,我可能需要运行两个单独的查询,然后以某种方式将结果后跟与php合并,但我完全迷失在哪里开始。

1 个答案:

答案 0 :(得分:0)

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