Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête mysql pour comparaison de prix

Je vous suggère d'avoir une table de produits "maître", qui répertorie tous les produits, qu'ils soient vendus ou non sur tous sites, ou un seul. Ensuite, rejoignez à partir de cela chacun des tableaux de tarification du site Web. Essayez de faire correspondre le nom du produit. Dans sa forme la plus simple, la requête ressemblerait à :

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;

Vous devrez peut-être essayer de joindre la marque et le modèle, c'est-à-dire on t1.brand = p.brand and t1.model = p.model , ou d'autres critères si le nom n'est pas unique.

les prix du site seront nuls s'ils ne vendent pas de produit.

Pour remplir rapidement le produit, vous pouvez exécuter ceci :

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;

Pour info, l'utilisation de UNION (plutôt que UNION ALL ) fait en sorte que la sortie de l'union ne produise que des lignes uniques