我有3个表,如下所示。给定一个特定的成员名称搜索术语,我想获取成员名称的列表,以及每个成员名称的最新活动时间。从选择语句中的每行输出的2个连接表中获取最新时间戳
“最新活动时间”是比较game_record和eating_record表格的最新时间。
期望的输出也在下面给出。
member_info表:
name m_id
---- ----
john 1
doe 2
johnson 3
game_record:
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
eating_record:
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
所需的输出时搜索项是 '约翰':
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捣鼓这个,请访问:http://sqlfiddle.com/#!2/b70d0/3
附:表game_record和eating_record还有其他专栏,这些专栏并不包含在这里,因为我想简化和隔离需要帮助的部分。
谢谢! :)
这将是我们更容易帮助你,如果你设置了[SQL小提琴(HTTP:// sqlfiddle.com/) – 2013-05-02 18:40:14
谢谢,我已将它添加到问题! – Yoga 2013-05-02 19:16:02