2010-12-10 2 views
0

Dites que je construis un site de comparaison des achats. Cela signifie que j'ai plusieurs vendeurs qui vendent le même article. Supposons une structure de base de données de base comme les suivantes:Modélisation de la base de données: requête pour comparaison site d'achat

================================== 
vendor_product 
================================== 
vendor_product_id (PK) 
condition ('new', 'used', 'collectible') 
unit_price 


================================== 
product_mapping 
================================== 
vendor_product_id 
product_id 


================================== 
product 
================================== 
product_id (PK) 
product_code 
name 

Étant donné un product_code (ou liste des product_code), retourner tous les produits du fournisseur qui cartographient le produit approprié, regroupant les produits du fournisseur par le produit cartographié, affichant gamme de prix (du plus bas au plus élevé, peu importe la condition), et le nombre de vendeurs qui vendent le produit. La sortie serait quelque chose comme ceci:

====================================================================== 
product_code | name | vendor_count | lowest_price | highest price | 
====================================================================== 
abc123  | Sony TV | 5   | 200   | 350   | 
---------------------------------------------------------------------- 
xyz987  | Barbie | 11   | 15   | 22   | 
---------------------------------------------------------------------- 

Je ne sais pas comment faire le SQL pour cela. Aucune suggestion?

+0

Avez-vous déjà essayé quelque chose? – Randy

Répondre

1

quelque chose comme ça ... pas testé du tout.

SELECT p.product_code product_code 
    , p.name name 
    , COUNT(vp.vendor_product_id) vendor_count 
    , MIN(vp.unit_price) lowest_price 
    , MAX(vp.unit_price) highest_price 
FROM product p 
JOIN product_mapping pm ON p.product_id = pm.product_id 
JOIN vendor_product vp ON pm.vendor_product_id = vp.vendor_product_id 
GROUP BY p.product_code, p.product_name 
+0

Fonctionne. Pas besoin de grouper par nom_produit, cependant. Merci! – StackOverflowNewbie

Questions connexes