用Ado+sql server如何写SQL语句?

haoguozhong 2003-10-16 12:50:13
表1的内容为:

序号 表名
1 A
2 B
3 C
4 D
... ...
... ...

其中表A、表B、表C.....的结构相同,

如何得到数据集:
序号 表名 纪录条数
1 A 表A记录条数
2 B 表B记录条数
3 C 表C记录条数
4 D 表D记录条数
... ... ...
... ... ...

SQL语句如何写?
...全文
32 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoguozhong 2003-10-18
  • 打赏
  • 举报
回复
自己up
Erice 2003-10-17
  • 打赏
  • 举报
回复
insert into 表2 values select count(序号) from 表1 group by 表名
XXSingle 2003-10-17
  • 打赏
  • 举报
回复
zhaojinghui(撒哈拉之雨的悲伤)的方法应该没问题
duanlijuan 2003-10-17
  • 打赏
  • 举报
回复
用两个Adoquery最简单了。

var i: integer;

with adoquery1 do
begin
sql.clear;
sql.add('select 序号,表名 from 表1');
close;
open;
end;

i:=1;
while not adoquery1.eof do
begin
adoquery2.SQL.Clear;
ADOQuery2.SQL.Add('select count(*) as total from '+ADOQuery1.FieldByName('表名').Value);
stringgrid1.RowCount:=stringgrid1.RowCount+1;
stringgrid1.Cells[0,i]:=adoquery1.Fields[0].AsString;
stringgrid1.Cells[1,i]:=adoquery1.Fields[1].AsString;

ADOQuery2.Close;
adoquery2.Open;
StringGrid1.Cells[2,i]:=adoquery2.Fields[0].Value;
i:=i+1;
adoquery1.Next;
end;

end;
说好不能打脸 2003-10-17
  • 打赏
  • 举报
回复
我不建议楼主在这种情况下使用SQL语句,这会给C/S模型带来额外的负担。有如下两种实现的建议:
1、用计算字段实现。
2、也可以用动态内存表嘛。
haoguozhong 2003-10-17
  • 打赏
  • 举报
回复
可能我的问题,有人理解的有问题。
我的主要目的是通过有表名纪录的表1,得到表1中的表名对应的各表的的记录数.
也就是得到各个表的纪录数目清单。
kevin218 2003-10-17
  • 打赏
  • 举报
回复
不行,上面说的都有问题;sql语句有问题,我都试过了
我也没想出好的,简单的啦
EastBuBai 2003-10-17
  • 打赏
  • 举报
回复
看书呀
haoguozhong 2003-10-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2360/2360070.xml?temp=.9588129
haoguozhong 2003-10-16
  • 打赏
  • 举报
回复
zh_ds(东方晨晓) 的方法应该可以,可是我不想用两个Adoquery,有没有一个比较完整的、准确的SQL语句,用一个Adoquery即可完成?
zhaojinghui 2003-10-16
  • 打赏
  • 举报
回复
select 1 AS 序号,count(*) as 表名 , 'A' as 纪录条数 from banji
UNION
select 2 AS 序号,count(*) as 表名 , 'B' as 纪录条数 from banji2
Northwindrocker 2003-10-16
  • 打赏
  • 举报
回复
select 序号,表名,(select count(*) from a)
再加上楼上的临时表
zh_ds 2003-10-16
  • 打赏
  • 举报
回复
建一临时表;
ADOQuery1.SQL.Add('select * from 表1');
ADOQuery1.Active ;= False;
While not ADOQuery1.Eof do
begin
ADOQuery2.SQL.Add('select count(*) as total from '+ADOQuery1.FieldByName('表名').AsString);
ADOQuery2.Active := True;
xuhao := ADOQuery1.FieldByName('序号').AsString;
biaoming := ADOQuery1.FieldByName('表名').AsString;
tiaoshu := ADOQuery2.FieldByName('total').AsString;
将结果插入临时表中;
end;
47522341 2003-10-16
  • 打赏
  • 举报
回复
没有调试;楼主自己试试看对不对;

create table #T(T00 varchar(50),
T01 integer)
insert into #T(T00,T01) values (select 表名 from 表1,select count(1) from (select 表名 from 表1))
select 序号 表名 T01 from 表1 join #T on 表1.表名 = #T.T00
drop #T
47522341 2003-10-16
  • 打赏
  • 举报
回复
select 序号 表名 (select count(1) form 表名) from 表1
flyingsnowfox 2003-10-16
  • 打赏
  • 举报
回复
用sql语句建一个临时表把你要查询的结果保存到里面
不用时就释放了它。(adoquery1.sql.add(create #tablename field......))

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧