求解简单SQL:(130分)

  • 主题发起人 主题发起人 编程小子
  • 开始时间 开始时间

编程小子

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾们,我的问题可能是多了点儿,分不够的话我可以再给的.
本人用DELPHI编写数据库程序的经验不多,在一个项目中发现下列疑难:
1.可不可在一个TQuery已查询的数据集中再查询为另一个新的数据集?
例:
Query1.SQL 为 select * from t1 where ...
Query2.SQL 为 select f1,f2 from Query2 //可不可以类似这样写?

//我虽知道可合为一个SQL,不过项目的某些原因,最好能为上述查询结构.

2.有三个表如下:
产量表:
人员ID 产品ID 数量 已交货标记 时间日期
__________________________________________________
1 1 32 T ...
2 1 31 F ...
1 2 8 T ...
1 2 12 F ...
... ...
上表中可能有很多重复的记录,只是在 时间日期 字段中不同.





人员表:
ID 姓名
____________
1 张三
2 李四


产品表:
ID 产品名 单价
________________________
1 童装长袖 5
2 成人长袖 8
3 童装背心 3

1.如何产生如下查询表:
产品名 未交货数量 已交货数量 产品数量合计
童装长袖 31 32 63
成人长袖 12 8 20

(注:产品名只显示产量表出现过的产品)


2.用Quick Report报表如何产生如下的工资报表?
X年X月

张三
___________________________________________
产品名 数量合计 单价 小计
童装长袖 32 5 160
成人长袖 8 8 64
___________________________________________
合计:224元

李四
...


如何解决上述问题,谢谢旨教!
 
对于第一个问题可以这样解决
[NOT] IN 子查询
这种语句的执行分两个步骤:首先执行内部子查询,然后根据子查询的结果再执行外层查询。
SELECT title=CONVERT(char(25),title)
FROM titles
WHERE title_id IN
(SELECT title_id
FROM titleeauthor
WHERE au_id LIKE '99%')
 
第一种方法不行,应该合并两个 SQL 为一个
 
问题1: 可以,用动态建立一个表格,然后BatchMove一下就可以了.
问题2: 可以看一下../Borland/../Demos/
 
select a.产品名,a.产品数量 as 已交货,b.产品数量 as 未交货,a.产品数量+b.产品数量 as 合计
form
(select 产品表.产品名,sum(产量表.数量) as 产品数量 join 产品表 on (产品表.ID=产量表.产品ID)
where 产量表.已交货标志='T' group by 产量表.产品ID)a
join
(select 产品表.产品名,sum(产量表.数量) as 产品数量 join 产品表 on (产品表.ID=产量表.产品ID)
where 产量表.已交货标志='F' group by 产量表.产品ID)b on (a.产品名=b.产品名)
这个语句不知能不能行?(当某项产品的已交货数量为0或者未交货数量为0时该产品将不显示)
 
我发现你对 SQL 语句的理解有一些误解。
From 子句后面应该接数据库中的数据集对象,如表,视图或子查询等,Query2 是客户端
定义的对象,数据库后端引擎并不认识这个对象,当然是不对的。
具体问题几位大虾都说的很多,就不重复了。
Clear ?
 
1、你可以建临时表的方法去做
Query1.SQL 为 select * into #query2 from t1 where.....
Query2.SQL 为 select f1,f2 from Query2
这应该可以了吧!
 
多人接受答案了。
 
真真对不起,最近太忙了,我忘记了答复,请大家不要见怪。
 
后退
顶部