Мне нужно составить отчет о некоторых студенческих работах. Каждый из студентов принадлежит одному клиенту. Вот таблицы (упрощенно для этого вопроса).
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 ...