Мне нужно создать отчет о завершении обучения. Каждый ученик принадлежит одному клиенту. Вот таблицы (упрощенные для этого вопроса).
CREATE TABLE `clients` (
`clientId` int(10) unsigned NOT NULL auto_increment,
`clientName` varchar(100) NOT NULL default '',
`courseNames` varchar(255) NOT NULL default ''
)
В поле courseNames
содержится строка имен, обозначенная запятыми, например, "AB01, AB02, AB03"
CREATE TABLE `clientenrols` (
`clientEnrolId` int(10) unsigned NOT NULL auto_increment,
`studentId` int(10) unsigned NOT NULL default '0',
`courseId` tinyint(3) unsigned NOT NULL default '0'
)
В поле courseId
указан индекс имени курса в поле clients.courseNames. Итак, если клиентом courseNames
являются "AB01, AB02, AB03", а courseId
для регистрации - 2
, тогда учащийся находится в AB03.
Есть ли способ, которым я могу сделать один выбор в этих таблицах, который включает название курса? Имейте в виду, что будут студенты из разных клиентов (и, следовательно, имеют разные названия курсов, не все из которых являются последовательными, например: "NW01, NW03" )
В принципе, если бы я мог разделить это поле и вернуть один элемент из результирующего массива, это было бы тем, что я ищу. Вот что я имею в виду в магическом псевдокоде:
SELECT e.`studentId`, SPLIT(",", c.`courseNames`)[e.`courseId`]
FROM ...