有两个表,分别叫做"工程表"、"控制点表",一个工程下可以有好多个控制点。工程表
工程ID、工程名控制点表
控制点ID、控制点名称、控制点所在工程的ID如果用户输入工程名称,想同时查询工程以及控制点,原来是这样select * into #t from 工程表where 工程名 like '%{0}%'
select * from #t
select * from 控制点表 where 工程ID in
(select 工程ID from #t)这样同时查出所有跟用户输入工程名有关的工程,以及所有跟这些工程有关的控制点,但看不出所属关系。哪个控制点在哪个工程下。
本来我想用循环,类似这种declare @i int
set @i=1
while @i<30
begin
--{{{{{{{{{{{{{{{{{{{{
select * from 控制点表 where 工程ID = @i
--}}}}}}}}}}}}}}}}}}}}
set @i=@i+1
end 但现在工程ID不是连续的,而是在一个临时表#t中,这要怎么写SQL语句啊
工程ID、工程名控制点表
控制点ID、控制点名称、控制点所在工程的ID如果用户输入工程名称,想同时查询工程以及控制点,原来是这样select * into #t from 工程表where 工程名 like '%{0}%'
select * from #t
select * from 控制点表 where 工程ID in
(select 工程ID from #t)这样同时查出所有跟用户输入工程名有关的工程,以及所有跟这些工程有关的控制点,但看不出所属关系。哪个控制点在哪个工程下。
本来我想用循环,类似这种declare @i int
set @i=1
while @i<30
begin
--{{{{{{{{{{{{{{{{{{{{
select * from 控制点表 where 工程ID = @i
--}}}}}}}}}}}}}}}}}}}}
set @i=@i+1
end 但现在工程ID不是连续的,而是在一个临时表#t中,这要怎么写SQL语句啊
工程ID、工程名
1001 港口工程
1002 新工程
……控制点
控制点ID、控制点名称、控制点所在工程的ID
1 控制点1 1001
2 控制点2 1002
3 控制点3 1001
4 控制点4 1001
5 控制点5 1002
select * from 控制点表 a,工程表 b where a.工程ID = b.工程ID
and b.工程名 like '%{0}%'
select *
from 控制点表 t1 left join 工程表 t2
on t1.控制点所在工程的ID = t2.工程ID and t2.工程名 like '%{0}%'
set @i=1
while @i<30
begin
--{{{{{{{{{{{{{{{{{{{{
select * from 控制点表 where 工程ID = @i
--}}}}}}}}}}}}}}}}}}}}
set @i=@i+1
end 但这种查的时候是固定的工程ID,从1到30.
没有办法查一个数据集里的工程ID。比如先
select 工程ID into #t from 工程表 where 工程名 like '%{0}%'
set @i=#t.rows[1].projectid;
while #t.rows !=null
begin
--{{{{{{{{{{{{{{{{{{{{
select * from 控制点表 where 工程ID = @i
--}}}}}}}}}}}}}}}}}}}}
set @i=#t.rows.next
end
and b.工程名 like '%{0}%' order by b.工程ID , a.控制点ID