/ / Unión externa izquierda y grupo por tema - sql

Unión externa izquierda y grupo por tema - sql

Escribí una consulta. esta consulta suma campos de 2 tablas diferentes. Y agrupados por campo de id de tabla principal. Pero la segunda unión externa izquierda no está agrupada y me da resultados diferentes.

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

Lo sé, es realmente complicado, pero estoy convencido de este problema. Mi pregunta es: ¿por qué segundo? left outer join No es correctamente la suma de campo. Si quito segundo left outer join o primero, todo es normal.

Respuestas

3 para la respuesta № 1

El problema es que tienes múltiples dimensiones.en sus datos, y el número de filas se multiplica más allá de lo que espera. Le sugiero que ejecute la consulta para un ID, sin el grupo by, para ver qué filas está produciendo la unión.

Una forma de solucionar este problema es mediante el uso de subconsultas correlacionadas:

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

Por cierto, parece que usas MySQL (porque tu consulta no se puede analizar en ningún otro dialecto). Debe etiquetar sus preguntas con la versión de la base de datos que está utilizando.