Вот некоторые варианты
1) Включите название курса в избранных и порядке она - это будет повторяться на каждой строке для студента в процессе
SELECT course.name, student.name
FROM student
INNER JOIN course
ON student.courseid=course.courseid
ORDER BY course.name;
который будет возвращать
Course Student
BCA abc
BCA def
BCA pqr
MCA stu
MCA ijk
BTECH xyz
Вы должны сделать отступы в своем уровне представления, например. путем отступов при каждом изменении названия курса.
2) Вы можете использовать GROUP_CONCAT
, чтобы объединить всех студентов в одну колонку для группировки по COURSE_NAME
SELECT course.name, GROUP_CONCAT(student.name) AS Students
FROM student
INNER JOIN course
ON student.courseid=course.courseid
GROUP BY course.name;
Возвращает
Course Students
BCA abc, def, pqr
MCA stu, ijk
BTECH xyz
Редактировать, снова я просто хочу один столбец
Ну, вы можете проецировать и комбинировать название курса и имена учеников с UNION
в один столбец, и использовать ручку заказа, чтобы связать студентов like this. Фактически, вы можете даже добавить пробелы, чтобы получить эффект отступа. Но это решение неправильной проблемы - такой вид форматирования является уровнем представления и не должен выполняться в Sql IMO.
SELECT Name
FROM
(
SELECT course.coursename AS Name, course.coursename AS Course, 1 As RowType
FROM course
UNION ALL
SELECT CONCAT(' ', student.name), course.coursename, 2 AS RowType
FROM student
INNER JOIN course
ON student.courseid=course.courseid
) x
ORDER BY Course, RowType;
Возвращает
BCA
abc
def
pqr
BTECH
xyz
MCA
ijk
stu
Такой отступ лучше всего оставить на уровне презентации (например, на веб-странице). То, что вы можете сделать, это включить 'courseame' в select и также заказать его. Экран нужно будет группировать и отступать. – StuartLC
Вам также нужно будет выбрать 'course.coursename', а не только' student.name'. Итак, у вас будет SELECT course.coursename, студент.name' и т. д. – Kusalananda
Почему вы не group_concat 'student.name' для каждого курса? – Beginner