日期:2014-05-17  浏览次数:20527 次

sql多表分组查询的问题
假设有三张表:

tb1

sID name

tb2
sID tID name

tb3
tID name time

tb2和tb1根据sID关联,tb3和tb2根据tID关联

我想写一个sql语句:根据tb1的sID分组分别得到tID,然后获取各sID下的tID,最后根据tb3的time(smalldatetime)排序得到各分组的第一个tb3的name的数据(就是我想取到各Sid下的最后时间的name)
sql

------解决方案--------------------
也可以这样

select a.sid,b.name,c.name,c.[time]
from tb1 a
left join tb2 b on a.sid=b.sid
left join (
select A.*
from tb3 a
inner join (select tid,MAX([time]) as [time] from tb3 group by tid)b
on a.tid=b.tid and a.[time]=b.[time]
)c on b.tid=b.tid

但是不知道你tb1与tb2之间是否存在一对多的关系?如果存在,那么还有获取tb2的最大sid