Возможен ли этот SQL-запрос / соединение? [Дубликат]

0

Я изучаю SQL, и я смотрю на соединения SQL в данный момент. Играя с различными объединениями в MySQL, и мне было интересно, если это возможно, чтобы все это было в 1 столбце.

БД имеет 3 таблицы:

  • магазины
  • Цены
  • товары

Продукция выглядит так:

  • Код товара
  • наименование товара

Магазины выглядят так:

  • shop_id
  • shop_name

Цены выглядят так:

  • price_id
  • price_amount
  • Код товара
  • shop_id

Таким образом, большой вопрос: возможно ли объединить его, чтобы он выглядел так: product_id, product_name, price_shop1, price_shop2, price_shop3

Я дошел до того, что мой вывод выглядит как product_id, price_amount, shop_id, shop_name, но в 3 разных строках.

Это можно сделать? Какое объединение я ищу, если это возможно?

Я не понимаю, где я мог бы использовать это, просто пытаюсь учиться.

Благодарю.

С уважением, Майк

  • 0
    Примерные данные и ожидаемый результат помогут.
  • 0
    Вы хотите все это в 1 столбце или 1 строке?
Теги:
database

1 ответ

0
Лучший ответ

Не совсем, мы говорим о том, чтобы сделать запрос с динамическим числом столбцов, потому что вы не знаете заранее, сколько магазинов с этим продуктом. Это не поддерживается

Но у вас может быть один столбец со всеми ценами, объединенными и разделенными запятыми (или любой другой символ, который вы выберете).

Например:

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 чтобы легко с этим справиться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню