表 jb
id:
jb_name:
jb_address:表 linkid:
l_name:
l_address:
jb_id其中jb.id = link.jb_id例如
jb表有以下数据1  全国   中国
2  世界    世界
3  美国   美国
link表没有数据我想要的效果是jb.id   jb.name   num
1        全国      0
2        世界      0
3        美国      0请指教

解决方案 »

  1.   

    select jb.id ,jb.name,count(1) 
     from jb,link
    where jb.id=link.link_id
    group by jb.id,jb.name
      

  2.   

    要是link表里有内容的话。而切有一条记录。你的只能显示一个name和对应的数量
      

  3.   

    SQL> select jb.id,jb.jb_name,decode(link.jb_id,null,0,0,0,count(*) over(partition by jb.id,jb.jb_name)) num
      2    from  (select 1 as id,'AllWorld' as jb_name,'China' as jb_address from dual
      3          union all
      4          select 2 as id,'World' as jb_name,'World' as jb_address from dual
      5          union all
      6          select 3 as id,'America' as jb_name,'America' as jb_address from dual
      7          )jb,
      8          (
      9           select '' as id,'' as l_name,'' as l_address,'' as jb_id from dual
     10          )link
     11   where jb.id = link.jb_id(+)
     12  ;        ID JB_NAME         NUM
    ---------- -------- ----------
             1 AllWorld          0
             2 World             0
             3 America           0
      

  4.   

    select jb.id ,jb.name,count(1)
    from jb,link
    where jb.id(+)=link.link_id
    group by jb.id,jb.name