如何在一个query中使用另一个query查询到的所有结果作为参数?(100分)

  • 主题发起人 主题发起人 pingzi
  • 开始时间 开始时间
P

pingzi

Unregistered / Unconfirmed
GUEST, unregistred user!
在query1中查询出某些clientid号,如g001,g002等,如果在query2中又要查询
这些clientid的其他信息,正常的sql语句是
select *
from dbo.Currentinfo
where clientid in ('g001','g002')
现在想把 in 后面的语句用query1的查询结果代替,由于query1的查询语句比较
复杂,我不想使用嵌套,如果直接使用datasource进行连接,好像 in 后面不能带参数,
而 用 where clientid = :clientid 只能查出第一条记录。 应该怎么写? 谢了先。
 
用query1.fieldvalues(字段名)试试
query2.sql.text := 'select * from dbo.currentinfo where clientid in ('
+ query1.fieldvalues('clientid') + ')';
 
var
mstr:string;
tmpstr:string;
begin
with query1 do begin
sql.clear;
sql.add('sql语句');
open;
tmpstr:='';
while not eof do begin
tmpstr:=tmpstr+''''+fields[0].asstring;
next;
if not eof then tmpstr:=tmpstr+''',';
end;
tmpstr:=trim(tmpstr)+'''';
//tmpstr的值为‘g001’,‘g002’
end;
mstr:='select * from dbo.Currentinfo where clientid in ('+tmpstr+')';
with query2 do begin
sql.clear;
sql.add(mstr);
open;
end;
end;
ok?
 
select * from (select * from table2)
 
大师就是大师!
 
其实我想了解的是有关query的datasource的有关问题,是否一次只能传递一条记录过来,
不过大师的方法也不失为一个好的解决方法,谢谢!
 
接受答案了.
 
后退
顶部