有两个表 结构不一样 不过两个表都有字段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张表
谢谢高手们帮我解决下。
现在是这样的 如果通过
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张表
谢谢高手们帮我解决下。
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
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
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
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
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 行)
*/
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
--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