Simplification requête de calcul SUM
Bonjour à tous!
Je cherche à simplifier (et optimiser) une requête. Je précise que celle ci fonctionne, mais ne me semble pas très optimale niveau performance.
Pour résumé j'ai une table produit, une table entree, une table sortie.
Je veux réaliser une vue avec pour chaque produit, la somme des entrées/sorties.
Voilà la requête que j'utilise actuellement (qui fonctionne bien). En gros je fais la somme des entrées, la somme des sorties puis la somme des deux résultats:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| SELECT id_produit, SUM(COALESCE(nbr_to_add, 0)) AS sum_entree_sortie
FROM
(
SELECT p.id_produit, SUM(COALESCE(e.qty_entree, 0)) AS nbr_to_add
FROM produit p
LEFT JOIN entree e ON e.id_produit = p.id_produit
GROUP BY p.id_produit
UNION
SELECT p.id_produit, SUM(COALESCE(s.qty_sortie, 0)) AS nbr_to_add
FROM produit p
LEFT JOIN sortie s ON s.id_produit = p.id_produit
GROUP BY p.id_produit
) as entreesortie
GROUP BY id_produit; |
Est-ce qu'a votre avis il y a moyen de l'optimiser / simplifier ? Je précise qu'il est compliqué de toucher à la structure des tables!
Merci d'avoir lu ces lignes!