合并sql查询以获得按日期不同的结果

合并sql查询以获得按日期不同的结果

问题描述:

我正在尝试构建“最近的事件”Feed并且似乎无法让我的查询正确,或者想出如何可能地合并两个查询的结果以对它们进行排序按日期。合并sql查询以获得按日期不同的结果

一个表格包含游戏/,另一个表格包含这些游戏的动作。

我正在尝试获取最近的事件以向用户展示 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和他们的gameids,但是我没有得到显示gameid发布时的行。

我明白,我可能需要运行两个单独的查询,然后以某种方式将结果与php后合并,但我完全失去了从哪里开始。

+0

从不抽象自己的代码,如果你问一个关于它的问题。 发布您正在运行的真实查询。此外,一对夫妇样本行和所需的输出也会有所帮助。 – Don 2010-02-02 01:03:47

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