首页 新闻 赞助 找找看

求一条SQL谢谢

0
悬赏园豆:40 [已解决问题] 解决于 2013-01-31 10:22

表结构如下:
   TB_City             TB_Mobile
CityID CityName   MobileID  MobileName
  1      北京          1         Iphone
  2      上海          2         Android
  3      武汉

     TB_Main
ID CityID MobileID
1   北京   Iphone
2   北京   Android
3   上海   Iphone
4   上海   Iphone

要求结果如下:
CityID  MobileID  Count
北京   Iphone        1
北京   Android       1
上海   Iphone        2
上海   Android       0
武汉   Iphone        0
武汉   Android       0

kaixin0497的主页 kaixin0497 | 初学一级 | 园豆:11
提问于:2013-01-31 09:48
< >
分享
最佳答案
0
select B.CityName,C.MobileName,COUNT(A.ID) as COUNT
from TB_Main A
right join TB_City B ON A.CityID=B.CityID
inner join TB_Mobile C ON A.MobileID=C.MobileID
Group by B.CityName,C.MobileName
收获园豆:40
滴答的雨 | 老鸟四级 |园豆:3681 | 2013-01-31 10:07
其他回答(1)
0

用的Oracle,前面对应你的几个表可以无视。

with city as(
select '北京' ct from dual
union
select '上海' ct from dual
union
select '武汉' ct from dual
),--对应你的tb_city表
mobile as(
select 'Iphone' mb from dual
union
select 'Android' mb from dual
),--对应你的tb_mobile表
tmain as(
select '北京' ct,'Iphone' mb from dual
union all
select '北京' ct,'Android' mb from dual
union all
select '上海' ct,'Iphone' mb from dual
union all
select '上海' ct,'Iphone' mb from dual
)--对应你的tb_main表
--下面是你要的sql语句:
select ct,mb,sum(c) from(
select ct,mb,0 c from city join mobile on 1=1
union all
select ct,mb,count(1) c from tmain group by ct,mb
) t group by ct,mb
order by ct,mb
向往-SONG | 园豆:4853 (老鸟四级) | 2013-01-31 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册