Превратить пару ключей MySQL в составной список
У меня есть 3 таблицы:
businesses ( id, name )
categories ( id, name )
business_categories ( business_id, category_id )
Третья таблица - это много ко многим, и есть PRIMARY KEY
на этой паре.
Я пытаюсь создать представление, которое было бы что-то вроде:
business_name category_names
Pizza Hut Restaurants, Pizza, Fast Food
Chipotle Restaurants, Mexican, Fast Food
Вот что я пытаюсь
SELECT `businesses`.`name`, CONCAT_WS( ',', (
SELECT `name`
FROM `categories`
JOIN `business_categories`
ON `categories`.`id` = `business_categories`.`category_id`
WHERE `business_categories`.`business_id` = `businesses`.`id`
) )
FROM `businesses`
ORDER BY `businesses`.`id` ASC
Но я получаю эту ошибку:
Subquery returns more than 1 row
1 ответ
Решение
Вы можете достичь этого с помощью функции GROUP_CONCAT():
SELECT
businesses.name,
GROUP_CONCAT(categories.name) AS all_categories
FROM
businesses
LEFT JOIN business_categories
ON businesses.id=business_categories.business_id
LEFT JOIN categories
ON business_categories.category_id=categories.id
GROUP BY
businessess.name