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