oracle的联表查询
有表a,b ,下面是一些数据
select * from a;
id name namecode ids
1 w 1w 11
2 s 2s 22
3 c 3c 33
4 d 4d 33
select * from b;
id name vid ids
1 w 11 11
2 s 22 22
3 c 33 33
4 d 33 33
联合查询结果
select * from a,b where a.ids=b.ids
id name namecode ids id name vid ids
1 w 1w 11 1 w 11 11
2 s 2s 22 2 s 22 22
3 c 3c 33 3 c 33 33
4 d 4d 33 3 c 33 33
3 c 3c 33 4 d 33 33
4 d 4d 33 4 d 33 33
我想根据b表的vid字段把a 表的数据分组,结果为
select count(a.id),b.vid from a,b where a.ids=b.ids group by b.vid
count(a.id) ids
1 11
1 22
4 33
但是下面才是我想要的结果:
count(a.id) ids
1 11
1 22
2 33
想了很久,都没想出要怎么解决,不知哪位大侠能帮帮我?
------解决方案--------------------
有表a,b ,下面是一些数据
select * from a;
id name namecode ids
1 w 1w 11
2 s 2s 22
3 c 3c 33
4 d 4d 33
select * from b;
id name vid ids
1 w 11 11
2 s 22 22
3 c 33 33
4 d 33 33
联合查询结果
select * from a,b where a.ids=b.ids
id name namecode ids id name vid ids
1 w 1w 11 1 w 11 11
2 s 2s 22 2 s 22 22
3 c 3c 33 3 c 33 33
4 d 4d 33 3 c 33 33
3 c 3c 33 4 d 33 33
4 d 4d 33 4 d 33 33
根据以上的表 33有4个,结果是4个很正常,你可以对a.id排重的话试试
------解决方案--------------------SQL code
select count(id),b_vid from
(
select a.*,b.vid b_vid from a,b where a.ids=b.ids
minus
null,null,null,null,null
)
goup by b_vid
------解决方案--------------------
select count(id),vid from (
select distinct a.id,b.vid from a,b where a.ids=b.ids) group by vid