SQL语句的问题 主从表的查询? 急!急1!jjiji (30分)

  • 主题发起人 主题发起人 hymen1
  • 开始时间 开始时间
H

hymen1

Unregistered / Unconfirmed
GUEST, unregistred user!
请大家帮帮忙!
应如何如下的数据库 查询得到 我想要的数据集呢?
数据库结构如下:
表1:
no1(关健字) nane sex

1 aa f
2 bb f
3 cc m
4 ab f


表2:
no2(关键字) no1 name ml
1 1 aa 100
2 1 aa 200
3 2 bb 200
4 2 bb 100
5 3 cc 500


要得到的 数据集

no1 name sum(ml)
1 aa 300
2 bb 300
3 cc 500
4 ab 0


那么查询语句应该怎样查了!!
果要查询 sum(ml)的范围在两值之间,

加上 SQL.Add('where SUM(juan.ml)>=:a ');

parambyname('a').asinteger:=strtoint(edit1.text);

或 SQL.Add('where ml>=:a ');

parambyname('a').asinteger:=strtoint(edit1.text);
好像两种都不行?

请指教!!

来自:westboy2000, 时间:2001-10-16 11:16:00, ID:675407
加条件这样写:
SELECT t1.no1,t1.name,SUM(t2.ml) AS ml
From t1 LEFT JOIN t2 ON t1.No1=t2.No1
where ml>=400
Group By t1.no1,t1.name order by ml;
注意where要放在Group By之前,最后才是order by。


来自:hymen1, 时间:2001-10-16 16:57:00, ID:676070 | 编辑
有点问题:
SQL.Add('SELECT main.no1,main.name,SUM(juan.ml) AS ml ');
SQL.Add('From main LEFT JOIN juan ON main.No1=juan.No1 ');
SQL.Add('where ml>=:a ');
SQL.Add('Group By main.no1,main.name');
SQL.Add('order by ml desc');
parambyname('a').asinteger:=strtoint(edit1.text);
// parambyname('b').asinteger:=strtoint(edit2.text);
是好的。当改为:

SQL.Add('where ml>=:a and ml<=:b');时

查询的结果有错误?

搞不清楚怎么回事?



出现的问题为:部分结果累计时,没有全部累计,
但当 ml>=:a 时是正常的,
ml<=:b时,就累加出现不全了???


 
没有人能回答我吗?[:(!]
 
用having语句判断sum(ml)
 
to jiao_he
你的意思是:having ml>=:a and ml<=:b[:D]
 
试过好象不行啊?
 
我不是给你答过了吗?看看下面贴子的最后回答,
http://211.101.4.25/delphibbs/dispq.asp?lid=669290
怎么回答了也不认真看?[?][:(!]
 
having 语句必须放到Group by 后面,

select main.no1,main.name,SUM(juan.ml) AS ml
from main LEFT JOIN juan ON main.No1=juan.No1
Group by main.no1,main.name
having (sum(juan.ml)>:a) and (sum(juan.ml)< :b)
order by m1 desc
 
原来是这样的。我看了很多书都没有找到,

thank you very much!!
 
多人接受答案了。
 
后退
顶部