#mysql #database
Вопрос:
Можно ли написать подзапрос, который вернет результат в виде строки.
Код:
SELECT service_provider.service_provider_id,f_name,l_name,email,phone,service_provider.timestamp,categories.category FROM service_provider INNER JOIN service ON service.service_provider_id = service_provider.service_provider_id INNER JOIN categories ON categories.category_id = service.category_id where service_provider.status = 'active'
Я попытался выполнить вышеприведенный запрос, он возвращает результаты в отдельных строках, я хочу, чтобы, когда значение в столбце категории отличается, оно должно складываться в столбец в виде списка.
Комментарии:
1. Вы что-то ищете
GROUP_CONCAT()
?2. я пробовал, но это работает неправильно, при использовании групповой конкат в подзапросе он возвращает несколько строк, и SQL выдает ошибку
3. Покажи, что ты пытался.
4. Вы должны присоединиться к подзапросу, а не помещать его в
SELECT
список.5. Или вам нужно сделать его коррелированным подзапросом, чтобы он возвращал только одну строку.
Ответ №1:
Используется GROUP_CONCAT()
для объединения всех названий категорий.
SELECT service_provider.service_provider_id,f_name,l_name,email,phone,service_provider.timestamp,GROUP_CONCAT(c.category) AS categories FROM service_provider INNER JOIN service ON service.service_provider_id = service_provider.service_provider_id INNER JOIN categories ON categories.category_id = service.category_id where service_provider.status = 'active' GROUP BY service_provider.service_provider_id