读书人

左联接有关问题

发布时间: 2012-03-05 11:54:02 作者: rapoo

左联接问题,请指教
A表

学号 教材编号 课程编号
0001 1 a
0002 2 b

B表

教材编号 课程编号 课程性质
1 a 必修
1 b 选修

想用左联结通过 教材编号 关联

slect A表.学号,B表.课程性质 from A表 left join B表 on A表.教材编号=B.教材编号
问题:这样出来的记录会操过A表的总记录数,原因是B表同一教材编号有两种课程性质,我想与B关联时就只查找到B表匹配的第一条记录就可以了,这样行不行啊?



[解决办法]
课程编号不关联?
[解决办法]
create table A(学号 varchar(10),教材编号 varchar(10),课程编号 varchar(10))
create table B(教材编号 varchar(10),课程编号 varchar(10),课程性质 varchar(10))

insert A select '0001 ', '1 ', 'a '
union all select '0002 ', '2 ', 'b '

insert B select '1 ', 'a ', '必修 '
union all select '1 ', 'b ', '选修 '

select * into #t from
(
select 教材编号,课程性质 from B a where 课程性质 =
(
select top 1 课程性质 from B
where 教材编号=a.教材编号
)
)t

select A.学号,#t.课程性质 from A left join #t on A.教材编号=#t.教材编号

drop table A,B,#t

学号 课程性质
---------- ----------
0001 必修
0002 NULL

(所影响的行数为 2 行)
[解决办法]
LS的方法不可取,我觉得应该是要多一个关联关系,如wgzaaa() 所说的,要课程编号也同时关联,要不然取道的结果也不合常理。
[解决办法]
slect A表.学号,B表.课程性质 from A表 left join B表 on A表.教材编号=B.教材编号
and A表.课程编号=B.课程编号
[解决办法]
如果没有课程编号.关联..取到的数据也不完善把...

读书人网 >SQL Server

热点推荐