2016-01-13 49 views
1

我想再添加一個表到我的查詢,它工作良好。但添加該表後發生問題,我無法弄清楚爲什麼會發生這種情況。添加一個表後,列之間相互複製

查詢工作良好

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

這可能是因爲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

相關問題