我正在制定价格比较计划。我有三个网站。在我的数据库中,我有三个网上商店表。每个表都有一个价格和一个product_id列。我想列出所有product_id-s并查看每个网店的价格。产品ID是唯一的,但在所有表中都不相同,因为并非所有的网店都有相同的产品。我正在使用mysql,但我对数据库很新。我应该尝试什么查询?
答案 0 :(得分:2)
我建议您有一个“主”产品表,列出所有产品,无论它们是在所有网站上销售,还是只销售一个。然后从那里加入到每个网站定价表。尝试匹配产品名称。在最简单的形式中,查询看起来像:
select
p.*,
t1.price as site1_price,
t2.price as site2_price,
t3.price as site3_price
from product p
left join website1 t1 on t1.name = p.name
left join website2 t2 on t2.name = p.name
left join website2 t3 on t3.name = p.name;
如果名称不是唯一的,您可能必须尝试加入品牌和型号,即on t1.brand = p.brand and t1.model = p.model
或其他一些标准。
如果他们不销售产品,网站价格将为空。
要快速填充产品,您可以运行:
insert into product (name, brand, model, ...)
select name, brand, model, ... from website1
union
select name, brand, model, ... from website2
union
select name, brand, model, ... from website3;
仅供参考,使用UNION
(而不是UNION ALL
)会使联合的输出只产生唯一的行