Мое приложение предназначено для сравнения товаров, продаваемых несколькими продавцами на ежедневной основе. Процесс запускается для загрузки текущих значений данных для каждого хранилища и заносит их в базу данных вместе с любыми предыдущими данными. Позже я планирую создавать графики и прочее из истории данных.
SELECT `a`.`part_number`, GROUP_CONCAT(`a`.`seller_id` ORDER BY `price` ASC), GROUP_CONCAT(`b`.`part_id` ORDER BY `price` ASC), GROUP_CONCAT(`b`.`price` ORDER BY `price` ASC)
FROM `parts`
LEFT JOIN (
SELECT *
FROM (
SELECT *
FROM `parts_data` AS `tmp_a`
ORDER BY `date_added` DESC
) AS `tmp_b`
GROUP BY `part_id`
) AS `b`
ON `a`.`part_id` = `b`.`part_id`
GROUP BY `a`.`part_number`
Чтобы немного объяснить запрос, мне нужно выбрать самую последнюю информацию о цене для нескольких идентификаторов деталей и сгруппировать их вместе с выбранным номером детали для сравнения. Кроме того, при объединении сгруппированные элементы сортируются по цене, чтобы быть самой высокой к самой низкой.
Каждый номер детали также может иметь любое количество идентификаторов элементов, связанных с ним, поэтому нет никакого значения того, сколько компаний отслеживается.
part_number | column1 | column2 | column3
++++++++++++++++++++++++++++++++++++++++++++++++
| seller:A1 | seller:A3 | seller:A6
153231 | id:x423 | id:x534 | id:x902
| cost:23 | cost:34 | cost:57
++++++++++++++++++++++++++++++++++++++++++++++++
| seller:A3 | seller:A1 | seller:A6
345123 | id:x313 | id:x631 | id:x652
| cost:78 | cost:86 | cost:99
++++++++++++++++++++++++++++++++++++++++++++++++
| seller:A5 | seller:A1 |
231756 | id:x663 | id:x291 |
| cost:35 | cost:52 |