有两个表
   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) 
还是显示错误!
高手指点一二

解决方案 »

  1.   

    select id,max(name),max(nvl(yumber,0))
    from table1 t1,table2 t2
    where t1.id=t2.id(+)
    group by t1.id
    不知是不是取最大次數
      

  2.   

    select t1.id,t1.name,nvl(sum(t2.ynumber),0)
    from t1,t2
    where t1.id=t2.id(+)
    group by t1.id,t1.name;
      

  3.   

    select t1.id,t1.name,max(t2.ynumber)
    from t1,t2
    where t1.id=t2.id
    group by t1.id,t1.name;
      

  4.   

    如果单就举例用的表1、表2以及上面列举的这些字段来试,上面的方法完全没问题。但实际上我的表1里面有70多个字段,sql语句很复杂
    这样写以后提示:不是group by 表达式
      

  5.   

    大家看看,我这样写为什么不对:select t1.name,(select max(t2.ynumber) from t2 where t2.id=t1.id group by t2.ynumber) as sl from t1提示缺少表达式!
      

  6.   

    select t1.name,
    t.maxynumber 
    from t1,(select t2.id,max(t2.ynumber) as maxynumber from t2 group by t2.ynumber) t
    where t1.id=t.id你的t1在from后面,但是你在select中用了t1
      

  7.   

    to:HelloWorld_001(我就是那大尾巴狼!) 
    谢谢了,你的提示解决了问题,不过子查询中的group by后边不能用t2.ynumber而要用t2.id,否则还是重复的!