1.Le ID client, Nom de la société, Nombre de commandes et montant total de la commande pour tous les clients qui ont acheté un article dans la catégorie Beverages.
SELECT Customers.CustomerID, Customers.CompanyName, Categories.CategoryName, [Order Details].Quantity FROM Customers, Categories, [Order Details] WHERE Categories.CategoryName ='Beverages';
3 Réponses :
Cette question peut sembler simple, mais nous devons amener les clients qui ont placé plus que 3 commandes avant de rejoindre d'autres tables.
select t1.CustomerID
, t1.CompanyName
, t3.CategoryName
, t4. Quantity
from Customers t1
inner join
(select customerId from
[Order Details]
where categoryId = (select categoryId from Categories where CategoryName ='Beverages')
group by customerId
having count(1) >= 3) t2 on t2.CustomerID = t1.customerId
inner join [Order Details] t4 on t4.CustomerID = t1.customerId
inner join Categories t3 on t3.CategoryId = t4.CategoryId
where t3.CategoryName ='Beverages'
Essayez cette requête.
SELECT t1.CustomerID
, t1.CompanyName
, t3.Categoryname
, t4. Quantity,noorders
FROM Customers t1
INNER JOIN [Order Details] t4 ON t4.CustomerID = t1.customerId
INNER JOIN Categories t3 ON t3.CategoryId = t4.CategoryId
CROSS APPLY (SELECT noorders=count(orderid) FROM [Order Details] ord2
WHERE ord2.CustomerID=t4.CustomerID and ord2.CategoryId = t3.CategoryId) AS t2
WHERE t3.CategoryName ='Beverages'
and t2.noorders>=3
C'est ce que le travail final pour moi merci à tous pour l'aide. p> p>
son "> =" pas "=>" Essayez d'ajouter "et [Détails de la commande] .Quanté> = 3" à la fin de votre requête
Vous devez montrer des relations entre les tableaux, les catégories et les détails de la commande. Et apprendre sur
groupby code> &ayant code> cela pourrait résoudre votre problème.Merci pour le "groupe par" et "avoir" m'aidez beaucoup. Et me laisser savoir son "> ="
Ajoutez quelques échantillons de données avec votre sortie attendue d'eux. CA aidera.
Non Non Non Non Non Non B> Apprenez à rejoindre vos tables à l'aide de la syntaxe de jointure moderne et non de cette ancienne et de la syntaxe de la clause. Si vous validez votre première requête, vous le réaliserez qu'il ne s'agit pas de manière logique.