Si j'ai une table client avec l'attribut Comment puis-je trouver le nombre total de commandes soumises par chaque client et si un client n'en a aucun, retourner zéro. p> J'ai essayé ce qui suit: p> client_id code> et une table de commande
Avec les attributs ordre_id code> et client_id code>. SELECT c.customer_id, COUNT(*)
FROM Customer c, Orders o
WHERE c.customer_id= o.customer_id
GROUP BY c.customer_id;
4 Réponses :
Essayez le ifnull code> Fonction:
https://www.w3schools.com/sql/sql_isnull.asp
J'espère que ça va aider! P>
Vous pouvez utiliser Démo avec des données d'échantillonnage. Ici, le client ID 2 et 4 n'a pas de données dans la table des commandes et cela résulte de zéro dans la sortie de la sortie. P> sortie: p> rejoindre code> et dans le compteur () code> Placez le o.customer_id code>
Utilisez une jointure extérieure et comptez les lignes dans la table "extérieure":
Agrégez d'abord les commandes par ID client et calculez le nombre total de comptes dans une sélection interne. Assurez-vous de rejoindre cette table à votre cliente afin que vous ne perdiez aucun des clients qui n'ont pas passé de commande. Enfin, utilisez une déclaration de cas pour déterminer si la valeur de retour du nombre de commandes pour un client est NULL signifie qu'ils n'ont pas fait de commandes et dans ce cas, définissez la valeur à zéro.
SELECT
c.customer_id,
CASE
WHEN o.num_orders IS NULL THEN 0
ELSE o.num_orders
END
FROM Customer c
LEFT JOIN (
SELECT customer_id, COUNT(*) AS num_orders
FROM Orders
GROUP BY customer_id
) AS o ON c.customer_id= o.customer_id;
(UNTESTÉ): Vous pouvez utiliser une jointure gauche à des clients et que vous devez répertorier tous les clients, vous pouvez afficher 0 chaque fois que le comptage de la table des commandes est NULL.