2010-04-05 6 views
2

Y at-il un moyen d'éviter d'utiliser la table tmp?Jeu de résultats mysql joignant la table existante

J'utilise une requête avec la fonction globale (somme) pour générer la somme de chaque produit: le résultat ressemble à ceci:

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_5 | 300 

maintenant je veux rejoindre le résultat ci-dessus à une autre table appelée produits. de sorte que je vais avoir un résumé comme ceci:

product_name | sum(qty) 
product_1 | 100 
product_2 | 200 
product_3 | 0 
product_4 | 0 
product_5 | 300 

je sais que 1 façon de le faire est la décharge du 1er résultat de la requête à une table temporaire puis rejoindre avec table produits. Y a-t-il un meilleur moyen?

Répondre

2
select products.*, sum(product.qty) 
FROM products LEFT OUTER JOIN product 
ON product.id = products.pid 
GROUP BY pid 
+0

Je remplacerai 'somme (product.qty)' 'avec soudent (somme (product.qty), 0)' puisqu'il retournera 'null' au lieu de' 0' si la table SUM est en cours d'exécution n'a aucun enregistrement pour ce produit. –

Questions connexes