Вот немного сокращенная выборка для представленного выше рисунка.
- Код: Выделить всё
SELECT
p.id as id,
concat(surname,' ',firname,' ',patname) as fio,
cast(group_concat(distinct ped.name order by ped.name asc separator ', ') as char) as edu,
cast(group_concat(distinct concat(pe.predmet,'(',pe.result,'%)') separator ', ') as char) as ege,
cast(group_concat(distinct pp.name order by pp.name asc separator ', ') as char) as privelege,
cast(group_concat(distinct l.name order by l.name asc separator ', ') as char) as lang
FROM
dtpeople p
left join dtpeople_edu ped on p.id=ped.topeople
left join dtpeople_ege pe on p.id=pe.topeople
left join dtpeople_privelege pp on p.id=pp.topeople
left join dtpeople_langs pl on p.id=pl.topeople
left join diclang l on l.id=pl.tolang
GROUP BY id
Заметьте, информация о владении иностранными языками, ЕГЭ, льготах, образовании абитуриента находится не в таблице dtpeople, а в таблицах dtpeople_langs, dtpeople_ege, dtpeople_privelege, dtpeople_edu, в каждой из которых есть поле toPeople - ссылка на поле ID в таблице dtpeople. Аналогично связаны справочник языков diclang с таблицей владения языками абитуриентом dtpeople_langs.