gpt4 book ai didi

mysql - 再添加一张表后,列之间会相乘

转载 作者:行者123 更新时间:2023-11-30 22:27:37 24 4
gpt4 key购买 nike

我想在我的查询中再添加一张表,效果很好。但是添加该表后出现问题,我无法弄清楚为什么会这样。

有效的查询

SELECT a.ArtId, a.ArtSifra, a.ArtNaziv,a.ArtRoditelj, a.ArtStanjeSA, a.ArtKategorija, a.ArtMjera, sum(b.artpaletatrenutnostanje) as palete, 
(a.artstanjesa + sum(b.artpaletatrenutnostanje)) AS ukupno,c.JmOznaka
FROM artikli a
JOIN artikli_palete_ulaz b on a.ArtID = b.ArtPaletaArtikal
JOIN jedmj c ON a.ArtMjera = c.JmId
WHERE a.ArtRoditelj != 0 AND a.ArtAktivan != 0
GROUP BY a.ArtId
ORDER BY a.ArtId ASC

查询 2 没有显示好的结果

SELECT a.ArtId, a.ArtSifra, a.ArtNaziv,a.ArtRoditelj, a.ArtStanjeSA, a.ArtKategorija, a.ArtMjera, sum(b.artpaletatrenutnostanje) as palete, 
(a.artstanjesa + sum(b.artpaletatrenutnostanje)) AS ukupno,c.JmOznaka, sum(d.Izlaz) as promet
FROM artikli a
JOIN artikli_palete_ulaz b on a.ArtID = b.ArtPaletaArtikal
JOIN jedmj c ON a.ArtMjera = c.JmId
JOIN kartica_artikla_2015 d ON a.ArtId = d.Artikal
WHERE a.ArtRoditelj != 0 AND a.ArtAktivan != 0 AND d.VrstaDokumenta != 18
GROUP BY a.ArtId
ORDER BY a.ArtId ASC

在查询 2 中,如上面的代码所示,我添加了表 kartica_artikla_2015。添加该表后,列“palete”和“ukupno”显示它们相乘的结果并不好。 “promet”列也没有给出好的结果。

我想知道是什么导致了这个问题,如果有人有任何建议如何解决这个问题。

最佳答案

这可能是因为在 kartica_artikla_2015.Artikal 中一个 artikli.ArtId 有多个值。在您的案例中解决此问题的一种方法是使用 EXISTS .所以,而不是

JOIN kartica_artikla_2015 d ON a.ArtId = d.Artikal
WHERE a.ArtRoditelj != 0 AND a.ArtAktivan != 0 AND d.VrstaDokumenta != 18

尝试

WHERE a.ArtRoditelj != 0 AND a.ArtAktivan != 0 AND EXISTS (
SELECT 1 FROM kartica_artikla_2015 d
WHERE a.ArtId = d.Artikal AND d.VrstaDokumenta != 18
)

编辑:我刚刚注意到您还从 kartica_artikla_2015 中选择了一个专栏。使用我的解决方案,因为您不再加入该表,所以您需要另一种方法。例如,而不是 sum(d.Izlaz) as promet你可以使用 (SELECT SUM(d.Izlaz) FROM kartica_artikla_2015 d WHERE a.ArtId = d.Artikal) as promet

关于mysql - 再添加一张表后,列之间会相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761651/

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