Proponuję mieć „główną” tabelę produktów, która zawiera wszystkie produkty, niezależnie od tego, czy są one sprzedawane na wszystkie witryny lub tylko jedną. Następnie dołącz z tego do każdej z tabel cenowych na stronie. Spróbuj dopasować nazwę produktu. W najprostszej formie zapytanie wyglądałoby tak:
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;
Być może będziesz musiał spróbować dołączyć na podstawie marki i modelu, tj. on t1.brand = p.brand and t1.model = p.model
, lub inne kryteria, jeśli nazwa nie jest unikalna.
ceny witryn będą zerowe, jeśli nie sprzedają produktu.
Aby szybko zapełnić produkt, możesz uruchomić to:
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, użycie UNION
(zamiast UNION ALL
) sprawia, że na wyjściu unii powstają tylko unikalne wiersze