Tôi khuyên bạn nên có bảng sản phẩm "chính", liệt kê tất cả các sản phẩm, bất kể chúng có được bán trên tất cả trang web, hoặc chỉ một. Sau đó tham gia từ đó vào từng bảng định giá của trang web. Thử đối sánh tên sản phẩm. Ở dạng đơn giản nhất, truy vấn trông giống như sau:
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;
Bạn có thể phải thử tham gia vào thương hiệu và mô hình, tức là on t1.brand = p.brand and t1.model = p.model
hoặc một số tiêu chí khác nếu tên không phải là duy nhất.
giá trang web sẽ không có giá trị nếu họ không bán sản phẩm.
Để nhanh chóng điền sản phẩm, bạn có thể chạy điều này:
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, việc sử dụng UNION
(chứ không phải UNION ALL
) làm cho đầu ra của liên hợp chỉ tạo ra các hàng duy nhất