Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage zum Preisvergleich

Ich schlage vor, Sie haben eine "Master"-Produkttabelle, die alle Produkte auflistet, unabhängig davon, ob sie auf alle verkauft werden Websites oder nur eine. Verbinden Sie sich dann mit jeder der Preistabellen der Website. Versuchen Sie, den Produktnamen abzugleichen. In ihrer einfachsten Form würde die Abfrage wie folgt aussehen:

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;

Möglicherweise müssen Sie versuchen, sich auf Marke und Modell zu verbinden, dh on t1.brand = p.brand and t1.model = p.model , oder einige andere Kriterien, wenn der Name nicht eindeutig ist.

Website-Preise sind null, wenn sie kein Produkt verkaufen.

Um das Produkt schnell zu füllen, könnten Sie Folgendes ausführen:

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, die Verwendung von UNION (anstatt UNION ALL ) bewirkt, dass die Ausgabe der Vereinigung nur eindeutige Zeilen erzeugt