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)
------解决方案--------------------也可以这样
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