如何对多个表使用 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

感谢大家