【发布时间】:2018-11-07 11:02:25
【问题描述】:
我有 3 个表,adjustinlines,Items 和 itemmovement 我正在寻找的是我需要从表中选择: adjustinline 中的所有行与 item 表中的描述以及来自 itemmovement 表 sum(qty)-sum(qtyout) 按 itemid 和 warehouseid 分组的现有数量。
调整行数
itemid warehouseid adjustbyquantity
1 2 5
1 1 3
2 2 4
3 1 5
项目
Id description
1 Item 1
2 Item 2
3 Item 3
物品移动
itemid warehouseid qtyin qtyout
1 1 3
1 1 2
1 2 3
1 2 1
2 2 1
请求查看
Description warehouseid Onhandqty Adjustbyqty
Item 1 2 2 5
Item 1 1 1 3
Item 2 2 1 4
Item 3 1 0 5
我正在尝试使用这两种方法,但它们都没有给我正确的结果
SELECT sum(itemv.qtyin) sum(itemv.qtyout),adjo.warehouseid,adjo.itemid,
adjo.adjustbyquantity,itm.description
FROM adjustoutcopy adjo
LEFT JOIN itemmovement AS itemv
ON adjo.itemid=itemv.itemid AND
adjo.warehouseid=itemv.warehouseid
LEFT JOIN items AS itm
ON adjo.itemid=itm.Id
group by itemv.itemid,itemv.warehouseid
ORDER BY adjo.Id DESC
如果 itemid 在 itemmovement 表中不存在,则该行不会出现,因为代码正在使用 join Inner。
【问题讨论】:
-
哪个 RDBMS ?请标记您正在使用的那个。
-
这似乎是一个常见问题,人们需要多个连接+聚合的连接,但他们尝试累积地进行聚合。基本调试说,在向代码添加更多内容时查看结果,并查看导致意外结果的添加内容的输入。请阅读并根据minimal reproducible example 采取行动--剪切、粘贴和可运行代码以及预期输出和规范。此外,如果您在 Google 上搜索了许多清晰、简洁、具体的问题/问题/目标的措辞,无论是否包含您的姓名/字符串,您都会找到答案。
标签: php mysql group-by left-join multiple-tables