如何对多个表使用 group by 的连接语法
How to use join syntax with group by for multiple tables
我有 3 个 tables , adjustinlines , Items 和 itemmovement
我正在寻找的是我需要 select 来自 tables :
adjustin 中的所有行与项目 table 的描述一致,现有数量来自项目移动 table 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
如果 itemmovement 中不存在 itemid table,则不会显示该行,因为代码正在使用内部联接。
由于您在 itemv
table 中 GROUP BY
列,如果其中没有条目 table 则不存在组。
终于解决了,代码如下:
SELECT itm.description,adjst.warehouseid,sumofqty,adjst.quantity
FROM adjustoutcopy adjst
LEFT JOIN (
SELECT itemid,warehouseid,sum(qtyin)-sum(qtyout) AS sumofqty
FROM itemmovement
GROUP BY itemid,warehouseid
) s ON (adjst.codeid = s.itemid) AND
(adjst.warehouseid = s.warehouseid)
LEFT JOIN items AS itm
ON adjst.codeid=itm.Id
感谢大家
我有 3 个 tables , adjustinlines , Items 和 itemmovement 我正在寻找的是我需要 select 来自 tables : adjustin 中的所有行与项目 table 的描述一致,现有数量来自项目移动 table 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
如果 itemmovement 中不存在 itemid table,则不会显示该行,因为代码正在使用内部联接。
由于您在 itemv
table 中 GROUP BY
列,如果其中没有条目 table 则不存在组。
终于解决了,代码如下:
SELECT itm.description,adjst.warehouseid,sumofqty,adjst.quantity
FROM adjustoutcopy adjst
LEFT JOIN (
SELECT itemid,warehouseid,sum(qtyin)-sum(qtyout) AS sumofqty
FROM itemmovement
GROUP BY itemid,warehouseid
) s ON (adjst.codeid = s.itemid) AND
(adjst.warehouseid = s.warehouseid)
LEFT JOIN items AS itm
ON adjst.codeid=itm.Id
感谢大家