首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL语句,分不够,以后一定补,非常感谢,很急

2012-01-19 
求一个SQL语句,分不够,以后一定补,非常感谢,很急!a表:xno箱号,id货号,sl数量1,a001,21,a002,33,a001,24,a0

求一个SQL语句,分不够,以后一定补,非常感谢,很急!
a表:
xno   箱号   ,id   货号   ,sl   数量
1,a001,2
1,a002,3
3,a001,2
4,a008,9

b表:
xno   箱号   ,id   货号   ,sl   数量
1,a001,3
1,a002,4
3,a001,2
5,a001,6


求:   a.xno,a.id,a.sl,b.xno,b.id,b.sl

1,a001,2,1,a001,3
1,a002,3,1,a002,4
3.a001,2,3.a001,2
4,a008,9,null,null,null
null,null,null,5,a001,6

[解决办法]
select a.xno,a.id,a.sl from a left join b on a.xno=b.xno

其他的join如下例:
例表a
aid adate
1 a1
2 a2
3 a3
表b
bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2
那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符
同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

[解决办法]
select a.xno,a.id,a.sl,b.xno,b.id,b.sl
from a full join b on a.xno=b.xno and a.id=b.id
order by isnull(a.xno,999999999),b.xno
[解决办法]
left join 可以完成你的功能,没有问题的,你好好看看。
[解决办法]
--用 FULL JOIN

create table A
(
xno int,
id varchar(10),
sl int
)

insert A select 1, 'a001 ',2
insert A select 1, 'a002 ',3
insert A select 3, 'a001 ',2
insert A select 4, 'a008 ',9

create table B
(
xno int,
id varchar(10),
sl int
)

insert B select 1, 'a001 ',2
insert B select 1, 'a002 ',4
insert B select 3, 'a001 ',2
insert B select 5, 'a001 ',6

select A.*,B.*
from A FULL JOIN B
on A.xno=B.xno and A.id=B.id
[解决办法]
order by isnull(a.xno,b.xno)--排序还可以改成这样

热点排行