Mysql запрос для сравнения цен - PullRequest
0 голосов
/ 25 июля 2011

Я работаю над программой сравнения цен.У меня есть три сайта.В моей базе данных у меня есть три таблицы для интернет-магазинов.У каждой таблицы есть цена и столбец product_id.Я хочу перечислить все product_id-ы и посмотреть цены в каждом интернет-магазине.Идентификатор продукта является уникальным, но не одинаковым во всех таблицах, поскольку не во всех интернет-магазинах одинаковые продукты.Я работаю с MySQL, но я очень плохо знаком с базами данных.Какой запрос мне следует попробовать?

1 Ответ

2 голосов
/ 25 июля 2011

Я предлагаю вам иметь «основную» таблицу продуктов, в которой перечислены все продукты, независимо от того, продаются они на всех сайтах или только на одном.Затем присоединитесь к каждой таблице цен на сайте.Попробуйте сопоставить название продукта.В простейшей форме запрос выглядит следующим образом:

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;

Возможно, вам придется попробовать объединить марку и модель, например on t1.brand = p.brand and t1.model = p.model, или некоторые другие критерии, если имя не уникально.

цены на сайте будут нулевыми, если они не продают продукт.

Чтобы быстро заполнить продукт, вы можете запустить это:

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, использование UNION (вместо UNION ALL) выводит из объединения только уникальные строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...