有两个表  结构不一样  不过两个表都有字段ticketid  然后各自都有时间字段
现在是这样的 如果通过
select a.*,b.name from a,b where a.ticketid=b.ticketid
这样的话呢 会产生数据丢失显示 会丢失掉 a里面有的b里面却没有的ticketid 或者 b里面有的a里面没有的ticketid
如果这样写
select a.*,(select b.name from b where b.ticketid=a.ticketid) from a
这样的话b里面的有的a里面没有的就会丢失显示
反则我想问的是怎么样能显示在以两个表的时间字段为条件 同时满足两个表列子如下
表a
-----------------
ticketid sum 时间列
1111      8
2222      9
3333      2
4444      5表b
-----------------
ticketid count 时间列
1111      4
7777      9
4444      3
9999      3结果
-----------------
ticketid sum count
1111      8    4
2222      9    0
3333      2    0
4444      5    3
7777      0    9
9999      0    3还有个时间列  就死好作为where后边的条件的 不过这个时间要同时满足2张表
谢谢高手们帮我解决下。

解决方案 »

  1.   

    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , sum=isnull(a.sum, 0)
          , count=isnull(b.count, 0)
    from a out join b on a.ticketid=b.ticketid 
      

  2.   

    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , sum=isnull(a.sum, 0)
          , count=isnull(b.count, 0)
    from a out join b on a.ticketid=b.ticketid 
      

  3.   

    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , sum=isnull(a.sum, 0)
          , count=isnull(b.count, 0)
    from a out join b on a.ticketid=b.ticketid 
      

  4.   

    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , sum=isnull(a.sum, 0)
          , count=isnull(b.count, 0)
    from a out join b on a.ticketid=b.ticketid 
      

  5.   

    create table tb1(ticketid int,[sum] int)
    insert into tb1 values(1111,8)
    insert into tb1 values(2222,9)
    insert into tb1 values(3333,2)
    insert into tb1 values(4444,5)create table tb2(ticketid int,[count] int)
    insert into tb2 values(1111,4)
    insert into tb2 values(7777,9)
    insert into tb2 values(4444,3)
    insert into tb2 values(9999,3)select isnull(a.ticketid,b.ticketid) ticketid
          ,isnull(a.[sum],0) [sum]
          ,isnull(b.[count],0) [count]
    from 
     (select ticketid,sum([sum]) [sum] from tb1 group by ticketid) a
    full join
     (select ticketid,sum([count]) [count] from tb2 group by ticketid) b
    on a.ticketid=b.ticketiddrop table tb1,tb2/*
    ticketid    sum         count       
    ----------- ----------- ----------- 
    1111        8           4
    2222        9           0
    3333        2           0
    4444        5           3
    7777        0           9
    9999        0           3(所影响的行数为 6 行)
    */
      

  6.   

    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , [sum]=isnull(a.[sum], 0)
          , [count]=isnull(b.[count], 0)
    from a out join b on a.ticketid=b.ticketid 
      

  7.   

    晕,怎么回复了这么多,,,
    --try
    select ticketid=isnull(a.ticketid, b.ticketid)
          , [sum]=isnull(a.[sum], 0)
          , [count]=isnull(b.[count], 0)
    from a full join b on a.ticketid=b.ticketid