Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta MySQL para comparação de preços


Sugiro que você tenha uma tabela de produtos "mestre", que liste todos os produtos, independentemente de serem vendidos em todos sites, ou apenas um. Em seguida, junte-se a cada uma das tabelas de preços do site. Tente combinar o nome do produto. Em sua forma mais simples, a consulta ficaria assim:
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;

Você pode ter que tentar juntar a marca e o modelo, ou seja, on t1.brand = p.brand and t1.model = p.model , ou algum outro critério se o nome não for exclusivo.

os preços do site serão nulos se não venderem um produto.

Para preencher rapidamente o produto, você pode executar isto:
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;

FYI, o uso de UNION (em vez de UNION ALL ) faz com que a saída da união produza apenas linhas únicas