sql - 为一种信息源组合 SQL 表
问题描述
我试图在查询中将 3 个不同的表组合成一行,但遇到了一些问题。目前我有四张桌子;PaintSched、Painted_Log、Paint_Defect 和 Paint_Inspection。
PaintSched - 单个条目,当调度程序只安排一些要绘制的部分时
LOT QTY
1 150
2 100
Painted_Log - 油漆部门然后拿了很多,并说明他们能画多少
LOT(FK) QTYPainted
1 145
2 100
Paint_Defect - 零件涂漆后用于油漆检查的缺陷主列表。我们手工检查我们涂漆的所有零件的质量。
DID Defect
1 Scratch
2 Paint Run
Paint_Inspection - 每次发现缺陷时,检查员都会点击相关按钮并记录以下内容。Lot 是 FK,DID 代表 Paint_Defect 中的缺陷 ID。数量始终为 1
Lot(FK) DID(FK) QTY
1 1 1
1 1 1
1 2 1
1 1 1
2 2 1
1 2 1
2 1 1
我想要得到的是以下输出:
Lot Sched Painted Scratch Paint Run
1 150 145 3 2
2 100 100 1 1
我尝试了以下方法无济于事:
SELECT PaintSched.Scheduled, PaintSched.Lot, PaintSched.qty, PaintSched.Is_Painted, Painted_Log.falloff
FROM PaintSched
INNER JOIN Painted_Log ON PaintSched.Lot = Painted_Log.lot
INNER JOIN MPA_Desc ON MPA_Desc.MPAID = PaintSched.MPAID
inner JOIN (
SELECT lot, sum(Paint_Inspection.qty) as seds
FROM Paint_Inspection
WHERE Paint_Inspection.Status = '1'
) AS seeds ON PaintSched.Lot = Paint_Inspection.Lot
解决方案
两件事情:
- 您应该在子查询中有一个 group by
- 当您为子查询设置别名时,您没有正确加入它
请参阅下面对您的查询的修改:
SELECT
PaintSched.Scheduled,
PaintSched.Lot,
PaintSched.qty,
PaintSched.Is_Painted,
Painted_Log.falloff
FROM PaintSched
INNER JOIN Painted_Log ON PaintSched.Lot = Painted_Log.lot
INNER JOIN MPA_Desc ON MPA_Desc.MPAID = PaintSched.MPAID
INNER JOIN (
SELECT lot, sum(Paint_Inspection.qty) as seds
FROM Paint_Inspection
WHERE Paint_Inspection.Status = '1'
GROUP BY Paint_Inspection.lot -- Missing GROUP BY
) AS seeds
ON PaintSched.Lot = seeds.Lot
推荐阅读
- mysql - MYSQL 查询,只给出可以保存为视图的每个组的第一次出现
- excel - VBA数据透视表代码在单步执行时有效,但在分配给宏按钮时无效
- python - Python3.6 函数未调用
- unicode - 无法使用 cqlsh 将 UTF-8 数据复制到 ScyllaDB
- javascript - React 中的条件样式
- spring-integration - 确认春季消息
- javascript - 从特定行访问表格单元格以检索其嵌入的输入值
- python - 如果条件使用 Python
- javascript - Vue 谷歌地图信息窗口自定义按钮不起作用
- java - 如何在句子中挑选主语、谓语、宾语和形容词