【发布时间】:2014-09-30 16:52:04
【问题描述】:
我在将两个表连接在一起时遇到问题,它不断增加我的值“qtyFulfillable”。
1st,当我运行这个查询时,我得到了正确的结果:sumQF = 85
SELECT fbai.id,
fbai.sku,
CASE WHEN SUM(fbai.qtyFulfillable) > 0 THEN SUM(fbai.qtyFulfillable) ELSE 0 END AS sumQF
FROM FBAInventory fbai
WHERE fbai.fbaInventoryReport_id = 62010
AND fbai.sku = 'ELO-250030'
GROUP BY fbai.id
ORDER BY sumQF DESC
但是当我开始加入连接时,我现在得到:sumQF = 14110
SELECT fbai.id,
fbai.sku,
CASE WHEN SUM(fbai.qtyFulfillable) > 0 THEN SUM(fbai.qtyFulfillable) ELSE 0 END AS sumQF,
CASE WHEN SUM(fbas.quantityShipped) > 0 THEN SUM(fbas.quantityShipped) ELSE 0 END as sumQS
FROM FBAInventory fbai
LEFT JOIN FBAShipment fbas
ON fbai.sku = fbas.sku
WHERE fbai.fbaInventoryReport_id = 62010
AND fbai.sku = 'ELO-250030'
GROUP BY fbai.id
ORDER BY sumQF DESC
由于某种原因,sql 将“fbas”表(连接表)中的总行数设为 166 行,然后乘以 85 x 166 = 14110。
我需要做些什么才能加入此表,但不能将我的结果乘以加入表中的总行数。谢谢!
【问题讨论】:
-
您使用的是 MySQL 还是 SQL Server?请不要标记两个完全不同的数据库平台,除非你真的同时使用这两个平台。
-
如果 FBAInventory 有 85 条 SKU='ELO-250030' 的记录,那么对于这 85 行中的每一行,它都会尝试加入 FBAShipment 中具有相同 sku 的行。在连接的“ON”子句中必须有一些其他字段对。
-
将 fbas.sku 添加到
GROUP BY子句是否可以解决问题? IE。GROUP BY fbai.id, fbas.sku