Подзапрос Sql, преобразующий столбец в список

#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