Как в одну строку через SQL вывести данные один ко многим?

В SQL можно использовать операторы объединения, чтобы вывести данные один-ко-многим в одной строке. Есть несколько способов достичь этого результата, но наиболее распространенный - это использование оператора JOIN с функцией агрегации GROUP BY.

Допустим, у нас есть две таблицы - "студенты" и "курсы". В таблице "студенты" хранится информация о студентах, а в таблице "курсы" - информация о курсах, на которые они записаны. Одному студенту может соответствовать несколько записей в таблице "курсы".

Чтобы вывести всех студентов и соответствующие им курсы в одной строке, мы можем сделать следующее:

SELECT s.name AS student_name, GROUP_CONCAT(c.course_name) AS courses
FROM students s
JOIN courses c ON s.student_id = c.student_id
GROUP BY s.student_id;

Это запрос соединяет таблицы "студенты" и "курсы" по полю "student_id" и затем группирует результаты по "student_id". Затем используется функция агрегации GROUP_CONCAT, которая собирает все значения из столбца "course_name" в одну строку, разделяя их запятыми.

Результатом будет таблица, содержащая два столбца - "student_name" и "courses". В столбце "student_name" будет имя студента, а в столбце "courses" будут перечислены все курсы, на которые он записан, разделенные запятыми.

Обратите внимание, что этот запрос будет работать только при условии, что каждая запись в таблице "курсы" имеет соответствующую запись в таблице "студенты" по полю "student_id". Если это не так, вы можете использовать операторы LEFT JOIN или RIGHT JOIN, чтобы сохранить все записи из одной таблицы в результате независимо от их соответствия в другой таблице.