以文本方式查看主题

-  搭建论坛  (http://bbs.diylsoft.com:8118/starforum/index.asp)
--  数据库交流  (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=6)
----  SQL命令请教~~  (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&id=4153)

--  作者:天上云地下海
--  发布时间:2005-8-26 21:25:11
--  SQL命令请教~~
在一库存表中有几千种药品和原始进货量,在销售表中记录着药品的销售记录 在星中如何写SQL命令以求得出每种药品的销售量和销售之后的库存量(进货量-销售量)?
--  作者:水手
--  发布时间:2005-8-26 22:48:18
--  
最好再加一个药品信息表。试试下面的SQL: select y.药品代码, y.药品名称, sum(k.进货数量) - sum(x.销售数量) as 当前库存 from 药品信息表 y,库存表 k,销售表 x where y.药品代码=k.药品代码 and y.药品代码=x.药品代码 group by y.药品代码, y.药品名称 order by y.药品代码, y.药品名称
--  作者:天上云地下海
--  发布时间:2005-8-26 23:35:51
--  
版主,能解释一下其中的语义吗?另外,您说要建立一个药品信息表,这个表是由手工建立的,还是由SQL生成的临时表,其中要建立些什么字段呢?先谢谢了
--  作者:水手
--  发布时间:2005-8-27 16:08:29
--  
因为你要查看药品库存,所以你必须有一个包含所有药品的信息表,有了这个表,你在销售以及进货等等操作中直接选择药品就可以了,而且要查看库存,最好也要有这张表,否则假如某个药品目前库存为0,但是本期发生了进货与销售,这样如果没有一个完整的药品表的话,可能造成数据查询不完整。
--  作者:天上云地下海
--  发布时间:2005-8-27 20:15:32
--  
谢谢版主,能解释一下上述语句的意思吗?
--  作者:水手
--  发布时间:2005-8-27 21:40:35
--  
就是从不同的表中取数,FROM语句是把相关表简化为一个字母,便于书写,就是SELECT语句中每一个字段前所加的字母,你也可以直接写数据表的名称。详细的介绍请看一些相关的SQL书籍做参考。
--  作者:天上云地下海
--  发布时间:2005-8-29 23:44:11
--  
版主,我试着运行了上述的SQL命令,结果却提示“试图执行的查询中不包含作为合计函数一部分的特定表达式‘代码’”。这是什么回事啊,如何解决呢
--  作者:水手
--  发布时间:2005-8-30 0:50:13
--  
你在SELECT语句中使用了"代码"字段但是在GROUP BY语句中没有包含该字段。在SQL语言中,如果SELECT语句中既有单个字段(如“代码”),又有汇总字段(如sum(x.销售数量)),那么在GROUP BY语句中必须包含所有的单个字段。否则就会出现你所说的错误提示。 请参考相关SQL语言帮助的聚集函数与非聚集函数相关内容。
--  作者:天上云地下海
--  发布时间:2005-8-30 0:59:58
--  
谢谢版主,查询是可以执行了,可是结果却不对: 库存表分别有编号为01和02的记录两条,而进库表中有编号和进货量 两个字段,其中的内容分别是:01 20;01 5;02 10 出库表中有编号和出库量两个字段,其中的内容分别是:01 5;02 5 现在用上述的SQL查询出来的是结果是:01 15;02 5,01应该是20才对的啊 为什么会这样呢?
--  作者:水手
--  发布时间:2005-8-30 10:54:11
--  
把你的项目传上来看看吧.