我正在尝试构建“最近事件”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合并,但我完全迷失在哪里开始。
答案 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