表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
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
解决方案 »
- 累加
- mysql中的左外连接在oracle中用什么表示?mysql中的数据库在oracle中对应什么?
- 来帮忙看一下
- 这么写存储过程,哪里错了?
- 全局类的疑惑
- 存储过程调用!
- 我想把SQL SERVER 6.5 升级到SQL SERVER 7.0,请大家给点建议!THANKS!
- 请问什么地方有ACCESS2000 和SQL SERVER 7。0的编程方面的PDF书下载,谢谢,不药那一套WDL的,内容简单且速度太慢,谢谢
- 那位兄弟见过这样的情况 SQL数据插入失败
- sqlserver活动监视器里等待类型SQLCLR是什么?等待时间一直很高怎么解决?
- 嵌套事物的主要应用环境问题
- 写sql语句时遇到几个问题?
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, '图片', 2select 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
aid f1 f2 m1 m2
----------- ---------- ---------- ----------- -----------
1 XX1 XX1 2 2
2 XX2 XX2 0 1
3 XX3 XX3 0 0(3 row(s) affected)
insert T2 select 1, '图片', 1
union all select 2, '图片', 1
union all select 3, '视频', 1
union all select 4, '视频', 1
union all select 5, '图片', 2select *,
视频总数=(select count(*) from T2 where aid=tmp.aid and t1='视频'),
图片总数=(select count(*) from T2 where aid=tmp.aid and t1='图片')
from T1 as tmp--result
aid f1 f2 视频总数 图片总数
----------- ---------- ---------- ----------- -----------
1 XX1 XX1 2 2
2 XX2 XX2 0 1
3 XX3 XX3 0 0(3 row(s) affected)
insert T1 select 1, 'XX1', 'XX1'
union all select 2, 'XX2', 'XX2'
union all select 3, 'XX3', 'XX3'