日期:2014-05-17  浏览次数:20808 次

散分了!一个简单的多表查询的问题!
有两个表
      table1  
    id         name    
  1001     刘德华
  1002     张学友
  1003     周润发
  1004     刘若英
    ......

        table2
    id         ynumber(开演唱会的次数)       addrss
  1001               1                                             北京
  1001               2                                             上海
  1002               1                                             天津
  1003               1                                             香港
  1003               2                                             台湾
  1001               3                                             纽约

现在要用一条select   语句查询出每个人开演唱会的次数,最终结果为:

      id             name             ynumber
    1001           刘德华               3
    1002           张学友               1
    1003           周润发               2
    1004           刘若英               0
我写的:
  select   t1.id,t1.name,t2.ynumber   from   table1   t1,table2   t2   where   t1.id=t2.id(+)
结果查询出来的记录都是两、三条重复的     用:
  select   t1.id,t1.name,t2.ynumber   from   table1   t1,table2   t2   where   t1.id=t2.id(+)   and   in   (select   max(t3.ynumber)   from   table2   t3   where   t1.id=t3.id)  
还是显示错误!
高手指点一二

------解决方案--------------------
select id,max(name),max(nvl(yumber,0))
from table1 t1,table2 t2
where t1.id=t2.id(+)
group by t1.id
不知是不是取最大次數
------解决方案--------------------
select t1.id,t1.name,nvl(sum(t2.ynumber),0)
from t1,t2
where t1.id=t2.id(+)
group by t1.id,t1.name;
------解决方案--------------------
select t1.id,t1.name,max(t2.ynumber)
from t1,t2
where t1.id=t2.id
group by t1.id,t1.name;
------解决方案--------------------
select t1.name,
t.maxynumber
from t1,(select t2.id,max(t2.ynumber) as maxyn