J'ai deux tables: produits et commandes. Commandes Références Produits via ProductID comme clé étrangère. Je veux savoir combien de fois chaque produit a été vendu, y compris le produit vendu uniquement une fois. Je peux presque le faire fonctionner avec une jointe gauche, mais cela donne toujours une rangée avec un nombre d'un pour tous les produits, que ce soit, que ce soit dans la table des commandes ou non.
y a-t-il un moyen de faire cela que Aura-t-on fini avec quelque chose comme ça? p> ... et ainsi de suite. P> P>
3 Réponses :
Si vous venez de faire un comptez (*) code>, alors vous comptez des produits qui n'ont aucune commande de 1 ... à la place, comptage (O.Orôteur) code> , qui ne comptera que les enregistrements qui ont un code indicateur non nul code>.
Je pense que c'est ce que l'OP est en train de faire
Je suppose que c'est qu'il fait un rejoindre code>, de sorte qu'il affiche produits code> qui n'ont pas de commandes code>, mais il fait un compte ( *) code>, donc cela les montre avec un nombre de 1 au lieu de 0.
Ah! Je me regardais aveuglé sur la requête, ne réalisais pas que j'utilisais Count (*) au lieu de compter (productide)
quelque chose comme
@Michael est correct.
Si vous avez une table de commande avec un compte, cela ressemblerait à ceci: P>
SELECT p.Product, SUM(ISNULL(o.ItemCount,0)) as [Count]
FROM
Products p LEFT JOIN
Orders o ON o.ProductID = p.ProductID
GROUP BY p.Product
Si vous ne voulez pas que les produits ne sont pas retournés, changez votre
rejoindre code> pour être un join interne code> code> à la place.un join code> code> est la bonne chose à faire, surtout si dans votre exemple, vous souhaitez répertorier "fromage", qui a été vendu zéro fois
Si vous ne voulez pas que les lignes n'ont pas de commandes, alors pourquoi votre exemple de sortie montre-t-il "fromage | 0"?
@ ean5533 - L'OP veut qu'il veuille dire
0 code>, pas1 code>. Quelle est la différence entrecompteur (id) code> etcompte (*) code>