sql >> Base de Datos >  >> RDS >> Mysql

Consulta mysql para comparación de precios.

Le sugiero que tenga una tabla de productos "maestra", que enumere todos los productos, independientemente de si se venden en todos sitios, o solo uno. Luego únase desde eso a cada una de las tablas de precios del sitio web. Intente hacer coincidir el nombre del producto. En su forma más simple, la consulta se vería así:

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;

Es posible que deba intentar unirse en marca y modelo, es decir, on t1.brand = p.brand and t1.model = p.model , o algún otro criterio si el nombre no es único.

los precios del sitio serán nulos si no venden un producto.

Para completar rápidamente el producto, puede ejecutar esto:

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, el uso de UNION (en lugar de UNION ALL ) hace que la salida de la unión produzca solo filas únicas