Bonjour
J'essaye d'afficher des produits que d'autre clients aurait acheter en rapport avec mon produit courant ( typiquement la fonctionnalité "Les clients ayant acheté cet article ont également acheté" d'amazon)
Pour ce faire j'ai 3 tables
Product_Catalogue : contenant des produits
Purchase : Contient les différentes infos liées à une commande
Purchase_Product : Produit acheté par le client contenant 2 colonnes
PID : ID de référence a la table Product_Catalogue
PUID : ID de reférence a la table Purchase
Via la query ci-dessous j'arrive à obtenir la liste des produits les plus commandés en rapport avec le produit courant et lié aux commandes des clients ( trié par produit les plus achetés )
Mon problème est lorsque je veux récupérer les produits basé sur la liste de PID qui m'est retourné via la query ci-dessus j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT TOP 10 [PID], COUNT(*) FROM Purchase_Product WHERE PUID in (SELECT PUID FROM Purchase_Product WHERE PID = 379321) GROUP BY [PID] ORDER BY COUNT(*) DESC
Pour etre franc je suis pas spécialiste de SQL et donc je sèche un peut sur cette erreur,Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
bien que je comprenne que je ne peux pas imbriquer 2 query, je ne sais pas comment résoudre ce probleme.
Voici ma query globale :
D'avance merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT p.PDate, PC.*, PF.Name AS FamilyName FROM Purchase_Product AS PP INNER JOIN dbo.Product_Catalogue AS PC ON PP.[PID] = PC.[ID] INNER JOIN dbo.Purchase AS P ON PP.[PUID] = P.[ID] LEFT OUTER JOIN dbo.Product_Family AS PF ON PC.FID = PF.FID WHERE PP.PID in (SELECT TOP 10 [PID], COUNT(*) FROM Purchase_Product WHERE PUID in (SELECT PUID FROM Purchase_Product WHERE PID = 379321) AND PID != 379321 GROUP BY [PID] ORDER BY COUNT(*) DESC) AND PC.[IsDeleted] = 0 ORDER BY PC.[IsHightlighted] DESC, PC.[IsAvailable] DESC,p.[PDate] DESC
Gauthier
Partager