En ce moment, la requête ci-dessous récupère plus d'un enregistrement de produit. Comment puis-je limiter l'ensemble de résultats à la récupération de l'enregistrement unique par ID_produit? Plusieurs enregistrements seront renvoyés à partir de différents produits, mais je n'ai besoin que d'une ligne de produits par ID_produit. Ceci est MS SQL 2005retourner des produits distincts basés sur product_id
SELECT DISTINCT dbo.Products.Product_ID AS Expr1,
CASE
WHEN dbo.Products.thumbnail IS NULL
OR dbo.Products.thumbnail = ''
THEN dbo.Products.Smimage
ELSE dbo.Products.thumbnail
END AS image ,
dbo.Products.ProductTitle ,
'<img WIDTH="62" src="http://media.companyinc.com/companyinc/SKUimages/small/' + dbo.Products.Smimage + '">' AS URLImage,
dbo.INV_dropshippers_To_ProductOptions.sku ,
dbo.Products.Discontinued ,
dbo.Products.CloseOut ,
dbo.Products.Special ,
dbo.Products.Active ,
dbo.Products.location_id ,
dbo.INV_dropshippers_To_ProductOptions.dropshipper_id ,
dbo.Products.season ,
dbo.Products.thumbnail ,
dbo.Products.Smimage ,
dbo.Products.CustomField2 ,
dbo.Products.pt_type ,
dbo.Products.PartNumber ,
dbo.Products.RetailPrice AS Price ,
dbo.skupurchasedreport.Product_Id ,
dbo.skupurchasedreport.totalprice_date1 ,
dbo.skupurchasedreport.totalprice_date2 ,
dbo.skupurchasedreport.qtypurchased_date1 ,
dbo.skupurchasedreport.qtypurchased_date2 ,
dbo.skupurchasedreport.totalprice_date3 ,
dbo.skupurchasedreport.qtypurchased_date3 ,
dbo.INV_dropshippers_To_ProductOptions.quantity AS currentqty
FROM dbo.Products
INNER JOIN dbo.skupurchasedreport
ON dbo.Products.Product_ID = dbo.skupurchasedreport.Product_Id
LEFT OUTER JOIN dbo.Options AS Options_2
RIGHT OUTER JOIN dbo.INV_dropshippers_To_ProductOptions
ON Options_2.Opt_ID = dbo.INV_dropshippers_To_ProductOptions.option_id3
LEFT OUTER JOIN dbo.Options AS Options_1
ON dbo.INV_dropshippers_To_ProductOptions.option_id2 = Options_1.Opt_ID
LEFT OUTER JOIN dbo.Options
ON dbo.INV_dropshippers_To_ProductOptions.option_id1 = dbo.Options.Opt_ID
ON dbo.Products.Product_ID = dbo.INV_dropshippers_To_ProductOptions.product_id
GROUP BY dbo.skupurchasedreport.Product_Id ,
dbo.INV_dropshippers_To_ProductOptions.product_id ,
dbo.Products.Product_ID ,
dbo.Products.ProductTitle ,
dbo.Products.thumbnail ,
dbo.Products.Smimage ,
dbo.INV_dropshippers_To_ProductOptions.sku ,
dbo.Products.Discontinued ,
dbo.Products.CloseOut ,
dbo.Products.Special ,
dbo.Products.Active ,
dbo.Products.location_id ,
dbo.INV_dropshippers_To_ProductOptions.dropshipper_id,
dbo.Products.season ,
dbo.Products.CustomField2 ,
dbo.Products.pt_type ,
dbo.Products.PartNumber ,
dbo.Products.RetailPrice ,
dbo.skupurchasedreport.Product_Id ,
dbo.skupurchasedreport.totalprice_date1 ,
dbo.skupurchasedreport.totalprice_date2 ,
dbo.skupurchasedreport.totalprice_date1 ,
dbo.skupurchasedreport.totalprice_date3 ,
dbo.skupurchasedreport.qtypurchased_date1 ,
dbo.skupurchasedreport.qtypurchased_date2 ,
dbo.skupurchasedreport.qtypurchased_date3 ,
dbo.INV_dropshippers_To_ProductOptions.quantity
Huh, je ne vois même pas l'agrégat –
@Damir - Je l'ai dit généralement quand je vois des gens écrivant des requêtes comme celle-ci, y compris un s qui peut inclure des agrégats tels que SUM, AVG, etc. Vous pouvez dire à partir de l'apparence de cette requête que c'est faux. L'affiche utilise DISTINCT encore grupping par trop de champs. C'est un problème de ne pas comprendre comment fonctionne GROUP BY/Distinct. – JonH
@JonH, d'accord. –