关于Query的使用(100分)

  • 主题发起人 主题发起人 dnb
  • 开始时间 开始时间
D

dnb

Unregistered / Unconfirmed
GUEST, unregistred user!
对一个数据表查询时,有多个条件需要满足,比如说我想查某段时间内
某种材料的消耗情况,这样的SQL语句怎么写?
另外SQL语句能不能按某些关键字汇总,类似FOXPRO中TOTAL的功能?
 
select sum(material) from table1 where date<=... and date>=...
and material='材料名'

sum:求和
avg:平均
count:计数
 
that 's easy
1.select * from tb1 where (datefield>date1)and(datefield<date2)
2.select count(f1) as a,sum(f1) as b from tb1 where ... group by f1

f1为数据库字段。groupby 子句可按字段分组汇总。
 
that 's easy
1.select * from tb1 where (datefield>date1)and(datefield<date2)
2.select count(f1) as a,sum(f1) as b from tb1 where ... group by f1

f1为数据库字段。groupby 子句可按字段分组汇总。
 
1. 多个条件用 Where 子语句,
如:
SELECT * FROM DB WHERE 条件一 AND (条件二 OR 条件三) .....

2. 汇总用SUM()函数
如:
SELECT SUM(COL1),SUM(COL2) FROM DB;









 
这回我用大嘴< :)

1.
select * from tb1
where (datefield>date1)and(datefield<date2)

2.
select count(f1) as a,sum(f1) as b
from tb1 where ...
group by f1

f1为数据库字段。groupby 子句可按字段分组汇总。

 
如Foxpro的Total
select field1,sum(field2) as total from table
where ........
group by field1
 
同样的意思何必多人重复?
大家无非想说在 Where 处写 XX and YY and ZZ 而已吧?
 
TO DND:
哥们,如果要用SQL,还是认真学一学它的语法吧。你的时间不会白费的。
 
我就不灌水了请看一下C:/Program Files/Common Files/Borland Shared/BDE/localsql.hlp帮助文件
 
来一趟大富翁太不容易了,从18日下午到现在,我试了有几十次了才连了上来,
可能我的问题没说清楚。

问题1:我所说的那三个条件都不是固定的数值,而是通过Tedit元件得到的,
可我不知道怎么把它们传递给SQL语句,教科书上说的什么动态添加SQL语句,
什么传递参数的方法,哪种我也没弄明白,烦请各位老兄不吝笔墨,多写几句。

问题2:我不是想对某一字段求和,假设我有一个DBF库
名称 数量
001 2
002 5
001 1
002 3
......
执行FOXPRO的TOTAL命令后,得到一个新库:
名称 数量
001 3
002 8
......
SQL怎么实现?
 
动态创建sql
query1.sql.add('select 名称,sum(数量) from yourdbf group by 名称 where 条件1....');
参数传递
query1.sql.add('select 名称,sum(数量) from yourdbf group by 名称 where (名称 like :tj1)...');
query1.ParamByName('tj1').asstring:='001';
query1.open;
或是为qyery1.datasource指定一个参数集
 
大家好:

大家都说应该用 SELECT * FROM DB WHERE 条件一 AND 条件二 AND 条件三
来查询,可这条件一 , 条件二 , 条件三怎么写呀?
SELECT * FROM DB WHERE field1 > Edit1.text 会报错!
麻烦各位再写清楚一点,谢谢!
 
to 3h:
我可不想重复,看看时间,大家几乎同时回答.
to dnb:
是这样的:

sql1:=format('select * from db where field1>''%s'' ',[Edit1.text]);
db.SQl.clear;
db.SQL.Add(sql1);
db.Open;
 
其实,LSS已经写的十分的明白了,你还要怎么样呢?
在Delphi的帮助中,这些也是写的十分明白的。
 
3h体谅体谅刚入门的吧.
看见上面一条好像写错了一点点,又不能肯定人家的一定错.只能再来一下.
to dnb
SELECT * FROM DB WHERE field1 > :Edit1
在Query里的SQL 如上面写,你漏了一个冒号.然后像LSS写的
query1.ParamByName('Edit1').asstring:=Edit1.Text+'%';
query1.open;

rss的方法好,但是对入门的来说理解上困难些.
 
query1.sql.add('select * from urtable where urdate>'''+edit1.text+''' and urdate<'''+edit2.text+'''');
 
dnb:

你可以用欢迎的代理服务器

202.10.11.2:80访问应该快得多了.
 
多人接受答案了。
 

Similar threads

后退
顶部