我有 3 个表,如下所示。在给定特定的成员名称搜索词的情况下,我想获取成员名称、ID 以及每个成员的最新活动时间的列表。
这个“最新活动时间”是比较 game_record 和 eat_record 表的最晚时间。
下面还给出了所需的输出。
成员信息表:
name m_id
---- ----
john 1
doe 2
johnson 3
游戏记录:
time_of_activity game_id m_id
---------------- ------- -----
2013-01-20 23:01:00 1 3
2013-01-20 23:01:07 4 1
2013-01-20 23:01:06 1 2
2013-01-20 23:01:05 3 1
饮食记录:
time_of_activity food_id m_id
---------------- ------- -----
2013-01-20 23:01:04 1 1
2013-01-20 23:01:03 4 1
2013-01-20 23:01:02 1 2
2013-01-20 23:01:01 3 3
搜索词为“john”时所需的输出:
name m_id latest_time
---- ---- -----------
john 1 2013-01-20 23:01:07
johnson 3 2013-01-20 23:01:01
到目前为止我已经尝试过:
我可以通过以下查询获得前 2 列:
select name,
m_id
from
member_info
where
name like "john%";
我可以通过以下查询获取给定成员的 latest_time,但我不确定如何将第二个查询与第一个查询合并以获得我想要的输出。
select greatest ((select
max(time_of_activity)
from
game_record
join
member_info on game_record.m_id = member_info.m_id
where member_info.name = "john"),
(select
max(time_of_activity)
from
eating_record
join
member_info on eating_record.m_id = member_info.m_id
where member_info.name = "john"));
SQL Fiddle 可在以下位置获得:http ://sqlfiddle.com/#!2/b70d0/3
PS 表 game_record 和 eating_record 有其他特定于游戏/食物的列,这里没有包括,因为我想简化和隔离我需要帮助的部分。
谢谢!:)