以文本方式查看主题 - 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子句 。
因为嵌套查询依赖与查询优化器的优化, 如果数据量大,而且查询复杂的话很有可能会影响效率。(但很有可能优化之后没有效率损失)
多谢指导!! |