首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

HELP!这个SQL如何写

2012-11-12 
HELP!这个SQL怎么写?有3个表,如下:GoodsmakeMakeItemsStockGdsID:0005 makeID:1MakeID:1BaseID:1GdsName

HELP!这个SQL怎么写?
有3个表,如下:
Goods make MakeItems Stock

GdsID:'0005 ' makeID:1 MakeID:1 BaseID:1
GdsName:'手机' Date:2008-12-01 GdsID:'0005 ' GdsID:'0005'
.... ... UseQua:100 StockQua:100
   
  makeID:2 makeID:2 BaseID:2
  Date:2008-12-02 GdsID:'0005' GdsID:'0005'
  ... UseQua:50 StockQua:0
省略表示有其他字段
我的SQL如下:
SELECT Sum(makeItems.UseQua),Sum(Stock.StockQua)
FROM MakeItems INNER JOIN make ON makeItems.makeID=make.MakeID
  INNER JOIN Goods ON MakeItems.GdsID=Goods.GdsID INNER JOIN
  Stock ON Stock.GdsID=Goods.GoodsID
WHERE Make.Date Between '2008-12-01' AND '008-12-02' AND Goods.GdsID='0005'

查询出来的汇总结果不对,我调试后发现有UseQua和StockQua都查了两次,各位老大帮帮我啊?


[解决办法]
你的inner join里面有1對多的情況
將inner join的條件寫全 應該可以
或者用
select sum(UseQua),sum(StockQua)
from
(
SELECT disitnct(makeItems.UseQua),(Stock.StockQua) 
FROM MakeItems INNER JOIN make ON makeItems.makeID=make.MakeID 
INNER JOIN Goods ON MakeItems.GdsID=Goods.GdsID INNER JOIN 
Stock ON Stock.GdsID=Goods.GoodsID 
WHERE Make.Date Between '2008-12-01' AND '008-12-02' AND Goods.GdsID='0005' 
)a
看看
[解决办法]
你把三个表的结构,和相关关系说说,然后要的结果是什么?
[解决办法]
好乱的3(4)个表
[解决办法]
上面的语法没有问题,
如果你要分组统计,后面要加group by加上分组统计的字段
[解决办法]
看了看,建议你先弄清楚这三表的字段连接是否会出现迪卡尔-积?
[解决办法]
问问题前,除了是找那种语句中的错误的问题, 最好不要贴自己写的逻辑乱七八早的语句,而是把需求描述和希望得到的结果贴出来。

你语句逻辑不对,你又说取得不是你想要的值,别人根本不知道你想要什么。
[解决办法]
很大可能应该是表关联的时候出现重复值,建议减少表试下
最好能把表结构和相互关系贴出来

[解决办法]

SQL code
SELECT Sum(makeItems.UseQua),Sum(Stock.StockQua) FROM MakeItems INNER JOIN make ON makeItems.makeID=make.MakeID     INNER JOIN Goods ON MakeItems.GdsID=Goods.GdsID  INNER JOIN     Stock ON Stock.GdsID=Goods.GoodsID WHERE Make.Date Between '2008-12-01' AND '008-12-02' AND Goods.GdsID='0005' [color=#FF0000]group by …… 进行分组[/color]
[解决办法]
探讨
你把三个表的结构,和相关关系说说,然后要的结果是什么?

[解决办法]
探讨
引用:
问问题前,除了是找那种语句中的错误的问题, 最好不要贴自己写的逻辑乱七八早的语句,而是把需求描述和希望得到的结果贴出来。

你语句逻辑不对,你又说取得不是你想要的值,别人根本不知道你想要什么。


你看清楚了先,不是我要的结果,是因为查询的数据有误,此外,语句有问题嘛?

[解决办法]
UP
[解决办法]
你运行下面的语句,查看一下结果集,就知道为什么聚合的数值不对了。
也许你需要加上group by子句,来指定按什么字段聚合。
SQL code
SELECT *FROM MakeItems INNER JOIN make ON makeItems.makeID=make.MakeID INNER JOIN Goods ON MakeItems.GdsID=Goods.GdsID  INNER JOIN Stock ON Stock.GdsID=Goods.GoodsID WHERE Make.Date Between '2008-12-01' AND '008-12-02' AND Goods.GdsID='0005' 


[解决办法]
...

SQL code
WHERE Make.Date Between '2008-12-01' AND '2008-12-02' AND Goods.GdsID='0005'
[解决办法]
帮顶

热点排行