SQL两表查询语句怎样写?

来源:百度知道 编辑:UC知道 时间:2024/06/30 15:34:07
a 表保存 id,name
比如:
id name
1 小张
2 小王
3 小李
4 小赵

b 表保存 pred_id,succ_id
b表中的pred_id,succ_id与a 表中的 id对应,用以表明先后关系
例如:
pred_id succ_id
1 2 (表示小王在小张之后)
2 3 (表示小李在小王之后)
3 4 (表示小赵在小李之后)

我想取出这样的四列:
前一个 名字 后一个 名字
1 小张 2 小王
2 小王 3 小李
3 小李 4 小赵

请问:应该如何写SQL语句?
希望大家帮助,谢谢!

可以这样写:
select b.pred_id,a.name,b.succ_id,c.name
from b inner join a on b.pred_id = a.id inner join a as c on b.succ_id = c.id

这里,在第二个关联中,给表a起了个别名c,这样,相当于表b分别与a、c两个表做关联

以上a表用aa,b表bb
字段与个表对应
create proc ShowInfo
as
declare @n int
set @n=1
declare @Value varchar(1024)
set @Value=''
declare @Name1 varchar(32)
declare @Name2 varchar(32)
declare qianhou cursor for select id1,id2 from bb
open qianhou
declare @id1 int
declare @id2 int
fetch next from qianhou into @id1,@id2
while @@fetch_status = 0
begin
if @n<5 begin
select @Name1=name from aa where id=@id1
select @Name2=name from aa where id=@id2
set @Value=@Value+'前一个 '+@Name1+' 后一个 '+@Name2+char(13)
end
set @n=@n+1
fetch next from qianhou into @id1,@id2
end
close qianhou
deallocate qianhou
--print @Value
go