2
我想将行转换为列(星期几名称),但每行只有一个条目,而其余列是空的(对于教师和时间段)。将行转换为MySQL列
表结构:
后续查询的输出:
和我的查询是:
SELECT
/* Employee section */
CONCAT(emp.first_name, " ",emp.middle_name,"", emp.last_name) as employeeFullName,
/* Timetable Entry section */
CONCAT(ct.start_time," - ",ct.end_time) as Slots,
if(wd.name='Monday',CONCAT(sb.name," - ",bt.name),null) Monday,
if(wd.name='Tuesday',CONCAT(sb.name," - ",bt.name),null) Tuesday,
if(wd.name='Wednesday',CONCAT(sb.name," - ",bt.name),null) Wednesday,
if(wd.name='Thurseday',CONCAT(sb.name," - ",bt.name),null) Thurseday,
if(wd.name='Friday',CONCAT(sb.name," - ",bt.name),null) Friday,
if(wd.name='Saturday',CONCAT(sb.name," - ",bt.name),null) Saturday,
if(wd.name='Sunday',CONCAT(sb.name," - ",bt.name),null) Sunday
FROM `timetable_entries` te
left Join `weekdays` wd ON te.weekday_id=wd.id
left Join `employees` emp ON te.employee_id=emp.id
left Join `class_timings` ct ON te.class_timing_id=ct.id
left Join `batches` bt ON te.batch_id=bt.id
left Join `subject` sb ON te.subject_id=sb.id
WHERE te.employee_id is not null
Group By te.class_timing_id,te.employee_id
我很舒服“转换成列”不是你想要的。这与关系数据库的原理相矛盾。 –
感谢您的回复,抱歉让人困惑,但我认为问题从图片和查询中清楚! – sefburhan
我没有时间详细阐述,但我认为你需要从课堂时间开始查询,并从08:00,09:00等开始每节课。从那里你可以得到课程的细节,一周工作日,员工等 –