辞职,散分!!!(带个SQL问题,可不回答,灌水有分) (200分)

  • 主题发起人 主题发起人 ysai
  • 开始时间 开始时间
Y

ysai

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是一个与本主题无关的问题,分在另一个贴子里,不回答这个问题也给分
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1301405
如果你回答这个问题正确,请到那拿分(50分),如果连那个问题一并解决了,
我就再开一个贴发分!这样你就有三个得分机会了。
问题:简化SQL语句
我要算出这次采购的材料,不包含已在采购(入库未提交)的材料,
用下面的SQL,如果入库明细中没有的材料不会出来:
SELECT 材料,需求数量+预警数量-库存数量-采购数量 AS 数量
FROM 材料,
(
SELECT 材料 AS 采购材料,数量 AS 采购数量
FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交
)
WHERE 需求数量+预警数量-库存数量-采购数量>0 AND 材料=采购材料;
我就改成了这样:
SELECT 材料,需求数量+预警数量-库存数量-采购数量 AS 数量
FROM 材料,
(
SELECT 材料 AS 采购材料,数量 AS 采购数量
FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交
UNION
SELECT 材料 AS 采购材料,0 AS 采购数量
FROM 材料
WHERE 材料 NOT IN
(
SELECT 材料
FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交
)
)
WHERE 需求数量+预警数量-库存数量-采购数量>0 AND 材料=采购材料;
结果出来了,但是不是很麻烦?能不能简化一点?
 
老兄这个过程SQL太长,而且又是经常用到的,不如写个带返回结果集的存储过程?
 
不好意思,这是ACCESS数据库,没办法,我也不想这样
 
呵呵,理解
 
SELECT 材料,需求数量+预警数量-库存数量-采购数量 AS 数量
FROM 材料,
(
SELECT 材料 AS 采购材料,数量 AS 采购数量
FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交
)
WHERE 需求数量+预警数量-库存数量-采购数量>0 AND 材料(+)=采购材料;
 
TO johnlhr:
老大,不行呢,是ACCESS2000,它提示说多余的(在表达式中
 
谢过,这个贴的分会平分,SQL问题在另一个贴里结
 
没办法,我不懂[:D]
 
好长啊,研究研究!
 
SELECT 材料,需求数量+预警数量-库存数量-采购数量 AS 数量
FROM 材料,
(
SELECT 材料 AS 采购材料,数量 AS 采购数量
FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交
)
WHERE 需求数量+预警数量-库存数量-采购数量>0 AND 材料=采购材料;
Union
SELECT 材料,需求数量+预警数量-库存数量-0 AS 数量
FROM 材料,
WHERE 需求数量+预警数量-库存数量>0 AND 材料 not in
( SELECT 材料 FROM 入库,入库明细
WHERE 入库.入库单ID=入库明细.入库单ID AND NOT 提交 )
 
后退
顶部