sql >> Databáze >  >> RDS >> Mysql

Mysql dotaz pro srovnání cen

Navrhuji, abyste měli „hlavní“ tabulku produktů, která uvádí všechny produkty bez ohledu na to, zda se prodávají na všech stránky, nebo jen jednu. Poté se z toho připojte ke každé z cenových tabulek webových stránek. Zkuste najít shodu podle názvu produktu. Ve své nejjednodušší podobě by dotaz vypadal takto:

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;

Možná budete muset zkusit připojení na značku a model, tj. on t1.brand = p.brand and t1.model = p.model , nebo nějaká jiná kritéria, pokud název není jedinečný.

ceny na webu budou nulové, pokud neprodávají produkt.

Chcete-li rychle naplnit produkt, můžete spustit toto:

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;

Pro informaci, použití UNION (spíše než UNION ALL ) způsobí, že výstup sjednocení vytvoří pouze jedinečné řádky




  1. Jak optimalizovat dotaz, pokud tabulka obsahuje 10 000 položek pomocí MySQL?

  2. Jak pomocí psql zobrazím seznam rozšíření nainstalovaných v databázi?

  3. ASPNETDB.mdf pro MySQL

  4. Každopádně omezit dobu provádění dotazu MySQL?