3 query imbriquées, renvoit une erreur Only one expression can be specified in the select list when the subque
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 )
Code:
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 |
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:
Citation:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Pour etre franc je suis pas spécialiste de SQL et donc je sèche un peut sur cette erreur,
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 :
Code:
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 |
D'avance merci
Gauthier