以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求教,这样的SQL语句如何实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9846)

--  作者:baoxyang
--  发布时间:2011/5/10 15:58:00
--  求教,这样的SQL语句如何实现?

select a.商品代号,a.商品名称,a.预警库存,b.库存量 from {商品资料} a  where a.预警库存 <= (select Sum(库存量) as 库存量 from {库存表} where 库存表.商品代号 = a.商品代号) and a.预警库存 > 0

 

我想把标记“库存量”也显示出来,请教如何写?

先谢了!!

[此贴子已经被作者于2011-5-10 15:58:45编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/5/10 16:08:00
--  
帮你顶。
--  作者:lxl
--  发布时间:2011/5/10 21:21:00
--  

试试:

select a.商品代号,a.商品名称,a.预警库存,SUM(b.库存量) as 库存量

from {商品资料} a  join {库存量} b on a.商品代号 = b.商品代号

where a.预警库存 > 0

group by a.ID, a.商品代号,a.商品名称,a.预警库存

having  a.预警库存 <= SUM(b.库存量)

 

红色的ID可以不加。

如果商品代号没有创建唯一约束的话,最好把红色部分加上,否则查询分析器首先会对a表分组。但这个分组做的是无用功,显然每个商品自成一组的


--  作者:baoxyang
--  发布时间:2011/5/11 8:45:00
--  
以下是引用lxl在2011-5-10 21:21:00的发言:

试试:

select a.商品代号,a.商品名称,a.预警库存,SUM(b.库存量) as 库存量

from {商品资料} a  join {库存量} b on a.商品代号 = b.商品代号

where a.预警库存 > 0

group by a.ID, a.商品代号,a.商品名称,a.预警库存

having  a.预警库存 <= SUM(b.库存量)

 

红色的ID可以不加。

如果商品代号没有创建唯一约束的话,最好把红色部分加上,否则查询分析器首先会对a表分组。但这个分组做的是无用功,显然每个商品自成一组的

不行,提示语句错误。谢谢LXL兄帮助。

终于折腾出来了,代码如下:

select a.货主代号,a.商品代号,b.商品名称,sum(a.库存量) as 库存总量,b.预警库存,b.手机提醒否,b.提醒次数,b.提醒日期 from 库存表 a join 商品资料 b on a.商品代号 = b.商品代号 and a.货主代号 = b.货主代号 where b.预警库存 > 0  and b.预警库存 <= (select sum(库存量) from {库存表} where 库存表.商品代号 = a.商品代号 and 库存表.货主代号 = a.货主代号) group by a.货主代号,a.商品代号,b.商品名称,b.预警库存,b.手机提醒否,b.提醒次数,b.提醒日期

但不知是否有不妥之处,请指教!


--  作者:lxl
--  发布时间:2011/5/11 9:30:00
--  
能运行应该就可以
但最好是用having子句 。
因为嵌套查询依赖与查询优化器的优化, 如果数据量大,而且查询复杂的话很有可能会影响效率。(但很有可能优化之后没有效率损失)



--  作者:baoxyang
--  发布时间:2011/5/11 13:42:00
--  
以下是引用lxl在2011-5-11 9:30:00的发言:
能运行应该就可以
但最好是用having子句 。
因为嵌套查询依赖与查询优化器的优化, 如果数据量大,而且查询复杂的话很有可能会影响效率。(但很有可能优化之后没有效率损失)


多谢指导!!