我想在我的查询中再添加一个表,这个表很好用。但是在添加该表之后会出现问题,我无法弄清楚为什么会发生这种情况。
查询效果很好
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"也没有给出好的结果。
我想知道什么可能导致这个问题,如果有人有任何建议如何解决问题。
答案 0 :(得分:0)
可能是因为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