gpt4 book ai didi

mysql - 混合两个sql查询: return what's requested in the first one but ignoring the second one

转载 作者:行者123 更新时间:2023-11-29 10:33:38 26 4
gpt4 key购买 nike

我有两个可以正常工作的查询:

SELECT DISTINCT MarcadaProduccio.Article, 
SUM(MarcadaProduccio.Rendiment * MarcadaProduccio.HoresMarcada)/SUM(MarcadaProduccio.HoresMarcada) AS MitjanaPonderada
FROM MarcadaProduccio
INNER JOIN MarcadaProduccio ON ParosMarcadesProduccio.IDMarcada = MarcadaProduccio.ID
WHERE MarcadaProduccio.Article IN (SELECT DISTINCT MarcadaProduccio.Article FROM MarcadaProduccio)
GROUP BY MarcadaProduccio.Article

SELECT ParosMarcadesProduccio.IDMarcada
FROM ParosMarcadesProduccio
WHERE ParosMarcadesProduccio.DescripcioParo LIKE "%MONTAJE%"

我想做的是执行一个查询,该查询根据第一个查询中的请求进行选择,但当 ParosMarcadesProduccio.IDMarcada = MarcadaProduccio.ID 时忽略第二个查询返回的行。

我该怎么做?

谢谢

PD:MarcadaProduccio 和 ParosMarcadesProduccio 表的结构

Main table Aux table

最佳答案

您的第一个查询无法工作,因为 ParosMarcadaProduccio 未定义。您可以将查询简化为如下所示:

SELECT mp.Article, SUM(mp.Rendiment * mp.HoresMarcada) / SUM(mp.HoresMarcada) AS MitjanaPonderada 
FROM MarcadaProduccio mp INNER JOIN
ParosMarcadaProduccio pmp
ON pmp.IDMarcada = mp.ID
WHERE mp.Article IN (SELECT mp2.Article FROM MarcadaProduccio mp2)
GROUP BY mp.Article;

请注意,不需要 SELECT DISTINCT

SELECT mp.Article, SUM(mp.Rendiment * mp.HoresMarcada) / SUM(mp.HoresMarcada) AS MitjanaPonderada 
FROM MarcadaProduccio mp INNER JOIN
ParosMarcadaProduccio pmp
ON pmp.IDMarcada = mp.ID
WHERE mp.Article IN (SELECT mp2.Article FROM MarcadaProduccio mp2) AND
NOT EXISTS (SELECT pmp.IDMarcada
FROM ParosMarcadaProduccio pmp2
WHERE pmp2.DescripcioParo LIKE '%MONTAJE%' AND
pmp.IDMarcada = mp.id
)
GROUP BY mp.Article;

在学习使用子查询进行过滤时,我强烈建议使用 NOT EXISTS 而不是 NOT IN。当子查询返回 NULL 值时,后者的行为很奇怪。你不妨先学习一下更好的方法。

关于mysql - 混合两个sql查询: return what's requested in the first one but ignoring the second one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46909449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com