日期:2014-05-19  浏览次数:20423 次

急,这个查询如何实现?
表1
aid       f1         f2
1           XX1       XX1
2           XX2       XX2
3           XX3       XX3

表2
fid       t1         aid
1           图片     1
2           图片     1
3           视频     1
4           视频     1
5           图片     2
============
要求得出下面结果
aid       f1         f2       m1(视频总数)     m2(图片总数)
1           XX1       XX1     2                           2
2           XX2       XX2     0                           1
3           XX3       XX3     0                           0




------解决方案--------------------
create table T1(aid int, f1 varchar(10), f2 varchar(10))
insert T1 select 1, 'XX1 ', 'XX1 '
union all select 2, 'XX2 ', 'XX2 '
union all select 3, 'XX3 ', 'XX3 '

create table T2(fid int, t1 varchar(10), aid int)
insert T2 select 1, '图片 ', 1
union all select 2, '图片 ', 1
union all select 3, '视频 ', 1
union all select 4, '视频 ', 1
union all select 5, '图片 ', 2

select T1.*, m1=isnull(T2.m1, 0), m2=isnull(T2.m2, 0) from T1
left join
(
select aid,
m1=sum(case when t1= '视频 ' then 1 else 0 end),
m2=sum(case when t1= '图片 ' then 1 else 0 end)
from T2
group by aid
)T2 on T1.aid=T2.aid