sql >> Database >  >> RDS >> Mysql

Mysql-query voor prijsvergelijking

Ik stel voor dat u een "hoofd"-producttabel heeft, waarin alle producten worden vermeld, ongeacht of ze op alle worden verkocht sites, of slechts één. Doe vervolgens mee aan elk van de prijstabellen van de website. Probeer matching op productnaam. In zijn eenvoudigste vorm ziet de query er als volgt uit:

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;

Mogelijk moet u proberen lid te worden op merk en model, bijv. on t1.brand = p.brand and t1.model = p.model , of andere criteria als de naam niet uniek is.

siteprijzen zijn nul als ze geen product verkopen.

Om het product snel te vullen, kunt u dit uitvoeren:

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;

Ter info, het gebruik van UNION (in plaats van UNION ALL ) zorgt ervoor dat de uitvoer van de unie alleen unieke rijen produceert




  1. Waarom slaat mysql sommige auto-increment-id's over?

  2. Doctrine2:Kan entiteit niet selecteren via identificatievariabelen zonder ten minste één rootentiteitsalias te kiezen

  3. Kolomnaam ophalen met de maximale waarde in een rij sql

  4. een CSV importeren in phpmyadmin