Я изучаю SQL, и я смотрю на соединения SQL в данный момент. Играя с различными объединениями в MySQL, и мне было интересно, если это возможно, чтобы все это было в 1 столбце.
БД имеет 3 таблицы:
Продукция выглядит так:
Магазины выглядят так:
Цены выглядят так:
Таким образом, большой вопрос: возможно ли объединить его, чтобы он выглядел так: product_id, product_name, price_shop1, price_shop2, price_shop3
Я дошел до того, что мой вывод выглядит как product_id, price_amount, shop_id, shop_name, но в 3 разных строках.
Это можно сделать? Какое объединение я ищу, если это возможно?
Я не понимаю, где я мог бы использовать это, просто пытаюсь учиться.
Благодарю.
С уважением, Майк
Не совсем, мы говорим о том, чтобы сделать запрос с динамическим числом столбцов, потому что вы не знаете заранее, сколько магазинов с этим продуктом. Это не поддерживается
Но у вас может быть один столбец со всеми ценами, объединенными и разделенными запятыми (или любой другой символ, который вы выберете).
Например:
SELECT
a.product_id,
a.product_name,
GROUP_CONCAT(b.price_amount SEPARATOR ';') prices
FROM
products a INNER JOIN prices b ON a.product_id = b.product_id
GROUP BY a.product_id
Это должно дать вам список продуктов и список всех доступных цен, хотя в виде строки, которую вам придется анализировать.
Если вы также хотите включить магазины, в которых находятся эти товары, я советую вам не делать этого. Поскольку в любом случае требуется некоторый анализ, просто получите полный список, который будет включать дубликаты продуктов, но вы можете отсортировать по product_id
чтобы легко с этим справиться.