我是mysql的新手并且正在努力更改商店应用程序以使其拥有两个库存。我创建了一个存储库存数量的表:
然后我计划创建一个包含库存数量,每个商店,每个SKU的视图。我使用以下查询:
SELECT
`stockList`.`sku`,
SUM(A.`stockQty`) AS 'store1',
SUM(B.`stockQty`) AS 'store2',
SUM(`stockList`.`stockQty`) AS 'total'
FROM `stockList`
LEFT JOIN (
SELECT * FROM `stockList` WHERE `idStock`=1
) AS A
ON `stockList`.`sku`=A.`sku`
LEFT JOIN (
SELECT * FROM `stockList` WHERE `idStock`=2
) AS B
ON `stockList`.`sku`=B.`sku`
GROUP BY `stockList`.`sku`
每个结果表,计算不正确,我无法识别逻辑:
SKU 43应该显示store1 = 9而store2 = 10,total = 19.这是他们在我单独执行选择查询时显示的内容。如果我误解了这个和逻辑是如何运作的,请告诉我。
答案 0 :(得分:2)
您可以在子查询上使用firstNotificationTime.setDate(firstNotificationTime.getDate());
来计算SUM
sku
可能会导致某些字段不匹配导致LEFT JOIN
,因此请使用IFNULL预设值NULL
你可以试试这个。
0
答案 1 :(得分:1)
您的查询要复杂得多。你可以这样做:
SELECT
sku,
SUM(stockQty) as total,
SUM(IF(idStock=1,stockQty,0)) AS `store1`,
SUM(IF(idStock=2,stockQty,0)) AS `store2`
FROM `stockList`
GROUP BY sku
输出:
sku total store1 store2
36 10 10 0
37 3 3 0
38 4 4 0
39 3 3 0
40 10 10 0
41 12 12 0
42 12 12 0
43 19 9 10