sql >> Databasteknik >  >> RDS >> Mysql

Mysql-fråga för prisjämförelse

Jag föreslår att du har en "master" produkttabell, som listar alla produkter, oavsett om de säljs på alla webbplatser, eller bara en. Gå sedan från det till var och en av webbplatsens pristabeller. Testa att matcha produktnamnet. I sin enklaste form ser frågan ut så här:

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;

Du kanske måste prova att gå med på märke och modell, dvs on t1.brand = p.brand and t1.model = p.model , eller något annat kriterium om namnet inte är unikt.

webbplatspriserna blir null om de inte säljer en produkt.

För att snabbt fylla i produkten kan du köra detta:

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, användningen av UNION (istället för UNION ALL ) gör att utdata från fackföreningen endast producerar unika rader




  1. Kan ett nummer användas för att namnge en MySQL-tabellkolumn?

  2. Varning:mysql_result() [function.mysql-result]:Det går inte att hoppa till rad 0 på MySQL resultatindex 5 i profile.php på rad 11

  3. gruppera exakta tandemvärden från 2 kolumner?

  4. Hur kan jag konvertera bigint (UNIX-tidsstämpel) till datetime i SQL Server?