Наилучшим подходом было бы создание разделенных запятыми списков на уровне представления клиента. Вы можете присоединиться к столам вместе, как:
select
class.id
, class.name
, flags.flags
, session.session
from class
left join flags on flags.classid = class.id
left join session on session.classid = class.id
Хотя базы данных не предназначены для форматирования данных, большинство баз данных поддерживают какой-либо способ создания разделенных запятыми списков. Например, в MySQL вы можете использовать group_concat
:
select
class.id
, class.name
, group_concat(flags.flags separator ',')
, group_concat(session.session separator ',')
from class
left join flags on flags.classid = class.id
left join session on session.classid = class.id
group by class.id, class.name
Если вы используете другую DMBS, добавьте ее в свой вопрос.