合并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后合并,但我完全失去了从哪里开始。
答
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
从不抽象自己的代码,如果你问一个关于它的问题。 发布您正在运行的真实查询。此外,一对夫妇样本行和所需的输出也会有所帮助。 – Don 2010-02-02 01:03:47