php - 如何将连接语法与 group by 用于多个表
问题描述
我有 3 个表格,adjustinlines,Items 和 itemmovement 我正在寻找的是我需要从表格中进行选择:adjustinline 中的所有行都带有来自 item 表格的描述以及来自 itemmovement 表格总和的现有数量(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 表中,则不会出现该行,因为代码使用了连接 Inner 。
解决方案
终于解决了,代码如下:
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
谢谢大家
推荐阅读
- r - dplyr 分组后用中位数替换 NA
- xcode - 如何在 Fastlane 中更改构建配置 - 通过 gym 、 build _app 或 xcodebuild
- android - 从工作管理器上传大视频时,应用程序在某些设备中突然崩溃
- database - Azure PostgreSql 连接致命:主机“xx.xx.xx.xx”、用户“xyz”、数据库“xyz”、SSL 上没有 pg_hba.conf 条目
- php - 图书馆 GD 问题
- node.js - 无法从 node.js 请求回调中设置变量
- sql - SQL从重复行中只选择一行
- java - 关于java中代码的问题,尤其是在skip函数中
- javascript - 强制通过 HTML 下载文件
- php - 如何使用外键从具有另一个表的顺序的表中获取记录