我写了一个查询。此查询汇总来自2个不同表的字段。并按主表id字段分组。但是第二个左外连接没有分组,给我不同的结果。
SELECT s.*,
f.firma_adi,
sum(sd.fiyat) AS konak,
sum(ss.fiyat) AS sponsor
FROM fuar_sozlesme1 s
INNER JOIN fuar_firma_2012 f
ON ( s.cari = f.cari )
LEFT OUTER JOIN fuar_sozlesme1_detay sd
ON ( sd.sozlesme_id = s.id )
LEFT OUTER JOIN fuar_sozlesme1_sponsor ss
ON ( ss.sozlesme_id = s.id )
GROUP BY s.id
ORDER BY s.id DESC
我知道,这真的很复杂,但我仍然坚持这个问题。
我的问题是:为什么第二个left outer join
不是正确的字段总和。如果我删除第二个left outer join
或第一个,则一切正常。
答案 0 :(得分:3)
问题是您的数据有多个维度,行数超出预期。我建议您运行一个id的查询,而不使用group by,以查看连接正在生成哪些行。
解决此问题的一种方法是使用相关子查询:
select s.*, f.firma_adi,
(select SUM(sd.fiyat)
from fuar_sozlesme1_detay fd
where sd.sozlesme_id = s.id
) as konak,
(select SUM(ss.fiyat)
from fuar_sozlesme1_sponsor ss
where (ss.sozlesme_id = s.id)
) as sponsor
from fuar_sozlesme1 s inner join
fuar_firma_2012 f
on (s.cari = f.cari)
order by s.id DESC
顺便说一下,你似乎是通过使用MySQL(因为你的查询在任何其他方言中都无法解析)。您应该使用您正在使用的数据库版本标记您的问题。