当前位置: 代码迷 >> Oracle管理 >> 求联合查询的步骤
  详细解决方案

求联合查询的步骤

热度:95   发布时间:2016-04-24 04:21:29.0
求联合查询的方法
目前有表A有三列uid,pid,name,一个uid可以有多个pid。根据pid分表10个B1到B10,每个表里面pid是可以重复的插入数据
现在的需求是列出任意uid对应pid在B表中的数量,谁帮忙给个sql语句?
举个例子:
A:
   uid      pid     name
    1      1001      a
    2      1002      b
    1      2002      c


B1:                                       
      pid     xxx 
    1001      x
    2001      x
    1001      x
    1001      x

B2:
      pid     xxx 
    1002      x
    2002      x
    1002      x
    

假如要查uid为1的对应pid数量的结果应该是:
uid   pid    name     count()
1     1001     a           3
1     2002     c           1
------解决方案--------------------

select a.uid,a.pid,a.name,count(1) cnt from A,
(
select pid from B1 union all
select pid from B2 union all
...
select pid from B10
)B
where a.pid=b.pid
group by a.uid,a.pid,a.name
  相关解决方案