【发布时间】:2011-01-11 23:27:26
【问题描述】:
我正在尝试构建“最近的事件”提要,但似乎无法正确查询我的查询,也无法弄清楚如何合并两个查询的结果以按日期对它们进行排序。
一张桌子存放游戏/,另一张桌子存放这些游戏的动作/。
我正在尝试获取最近的事件以向用户展示 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
所以我可以在新游戏发布时将其包含在操作列表中。
当我运行查询时,我得到了所有的 actionid 和他们的 gameid,但我没有得到显示 gameid 发布时的行。
我知道我可能需要运行两个单独的查询,然后以某种方式将结果后缀与 php 合并,但我也完全不知道从哪里开始。
【问题讨论】:
-
如果您提出问题,切勿抽象自己的代码。发布您正在运行的真实查询。此外,几个示例行和所需的输出也会有所帮助。