请教!如何多条SQL同时查询?(100分)(100分)

  • 主题发起人 主题发起人 zhengv
  • 开始时间 开始时间
Z

zhengv

Unregistered / Unconfirmed
GUEST, unregistred user!
请教!如何多条SQL同时查询?
result := copy(result, 0, length(result) - 1); //去掉最后的','号
A:= 'select namechr from name where namechr in ('+result+')';
B:= 'select b from 表2 where id=((select A from 表1 where my=' +
'''' + param2 + '''' + ')-(select A from 表1 where my=' +
'''' + param1 + '''' + '))';
C:= 'select namechr,b.meaning from name a,name1 b where a.strokes=b.id and a.namechr in ('+result+') ';
我想sql.add(A+B+C)同时查询结果,如何做?我想不出办法!
 
可以用Query同时得到多个结果集,然后你再用一个dataSet把其中的一个结果集取出来。
ADODataSet1.RecordSet := ADOQuery1.NextRecordset

能说说你一定要这样做的理由吗?
 
sql.add(A+';'+B+';'+C+';')
 
写成存储过程
然后再把三个结果用一个CURSOR返回。
 
多条SQL提取的列数应该相同,而且必须具有相同的类型。加个常量即可。
sql.add(A+' union '+B+' union '+C+';'
 
用union all可以连接多张表,dateset也是一张表!
但是表字段需要相同!
可以在query中加入空字段。

select A,null B from A where **
union all
select null A,B from B where **
union all
select A,B from C where **
 
对存储过程详细点好吗?别象雾象风又象鱼...
 
你把要求说说清楚,我把sql写给你!
 
就是上述过程,怎么写存储过程?
 
一、同时执行多条不同的查询语句,同时返回多个结果,只有用SQL SERVER,INTEBASE SERVER
等网络数据库才能用存储过程实现。或者你用多线程的方式分别执行,执行效果差不多,但
很麻烦。
二、如查询到一个结果做为另一个查询条件继续查询,就用子查询(查询嵌套),相当的语法
不是一两句说得清楚,建议你查一查有关SQL SERVER方面的资料。
三、SQL语句好象可以嵌套,但多个查询语句同时运行,结果都返回同一个表内该怎么办?多
表又该怎么办?如果用存储过程的话,就可以返回到多个表中。
给你个例子吧:
--将99年销售数据插入临时表#at中
SELECT * INTO #at
FROM xsqgb99
WHERE 客户单位<>'' AND 客户编号<>'' AND 发货日期<>''

--将2000年销售数据插入临时表#at中
INSERT #at
SELECT *
FROM xsqgb
WHERE 客户单位<>'' AND 客户编号<>'' AND 发货日期<>''

--生成扣率
UPDATE #at
SET 扣率=ROUND(销售额/ISNULL(NULLIF(中价金额,0),1),3)

--生成回扣管理临时表#HKGL
SELECT 合同单编号,ISNULL(SUM(业务提成1),0) YWF INTO #HKGL
FROM hkglk
GROUP BY 合同单编号
UNION
SELECT 合同单编号,ISNULL(SUM(业务提成1),0)
FROM hkglk99
GROUP BY 合同单编号
其中SELECT …… INTO 就是把查询结果插入表中,以上语句只是一个存储过程中N多语句
的一部分,明白了吧?
存储过程的写法,如果你用的是SQL SERVER,它的帮助写的很详细。如果不明白,再问我了
 
这里的解答哪个适用我的例子,如果适用我的例子请给个代码好吗?我不明白。
 
sql.add(A+';'+B+';'+C+';');
sql.add(A+' union '+B+' union '+C+';'
select A,null B from A where **
union all
select null A,B from B where **
union all
select A,B from C where **
代码我实验了都错,我苦苦期待着一个正确的的答案!
 
具体的情况或者这么写不是非常的清楚,但是可以提供一个思路(在MS SQL SERVER中):
在执行A语句时,生成的数据存入临时表table_A中;
在执行B语句时,生成的数据存入临时表table_B中;
在执行C语句时,生成的数据存入临时表table_C中;
这样,执行到最后的时候,就可以产生最后的数据。
procer








 
高人啊!给个可实验的代码好吗?我不懂!
 
你到底要完成什么事情,贴出来,大家讨论。
 
接受答案了.
 
后退
顶部