2010-12-10 49 views
0

说我正在建设一个比较购物网站。这意味着我有多个供应商销售相同的物品。假设一个基本的数据库结构如下所示:数据库建模:查询比较购物网站

================================== 
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 

给定一个PRODUCT_CODE(或PRODUCT_CODE列表),返回映射到适当的产品的所有供应商的产品,由映射产物分组供应商的产品,显示价格范围(从最低到最高,无论条件如何)以及销售该产品的供应商数量。输出会是这样的:

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

我不知道该怎么办了SQL这一点。有什么建议么?

+0

做你尝试任何事情了吗? – Randy 2010-12-10 01:05:24

回答

1

事情大致是这样的...不是在所有测试。

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

作品。不过,不需要按product_name进行分组。谢谢! – StackOverflowNewbie 2010-12-10 04:08:25