Я работаю над оператором select, который должен возвращать класс для каждого учебного дня. Осталось 4 учебных дня, прежде чем цикл начнется снова. (например, понедельник = день 1, вторник = день 2... четверг = день 4, пятница = день 1 и т. д.)
У некоторых учеников может быть 1 выходной в определенные дни, и в этом случае мы должны отображать пустое место в этой комбинации день/период.
На данный момент оператор select возвращает только те дни, которые имеют значение.
Пример:
Day 1 Day 2 Day 3 Day 4
Period 1 class class off class
Period 2 class class class off
Period 3 off class class class
Period 4 class off class class
Я пытаюсь добиться того, чтобы оператор select возвращал пустую строку (с нулевыми значениями) вместо периода, который отключен в определенный день. Я попытался добавить Unions с днем в качестве единственного значения.
Это не работает, так как я получаю свои первые 3 строки, а затем 4 других, но на самом деле мне нужны первые 3 строки (например, с днями 1,3,4) и последняя объединенная строка (например, день 2) в этом случае я могу потом сделать заказ в тот же день.
Как я могу это сделать? Должен ли я использовать пересечение? ..или противоположность пересечения? Также это для базы данных Oracle.
Выберите оператор:
select spct.course_code||'-'||spct.course_section as course,t.school_cycle_day as jour,p.legal_first_name,p.legal_surname,sc.room_no
from student_program_class_tracks@trl spct,class_meetings@trl cm,school_classes@trl sc,persons@trl p,timeslots@trl t,school_timeline_periods@trl tsp
where spct.school_code=cm.school_code
and spct.school_code=sc.school_code
and spct.school_code=t.school_code
and spct.school_code=tsp.school_code
and spct.school_year=cm.school_year
and spct.school_year=sc.school_year
and spct.school_year=t.school_year
and spct.school_year=tsp.school_year
and t.school_year_track=tsp.school_year_track
and t.school_timeline_code=tsp.school_timeline_code
and t.school_period=tsp.school_period
and spct.class_code=cm.class_code
and spct.class_code=sc.class_code
and sc.reporting_teacher=p.person_id
and cm.block=t.block
and spct.school_code='73'
and spct.school_year='20122013'
and spct.person_id='000170629'
and cm.semester='2'
and cm.term='1'
and t.school_period='1'
and ((spct.start_date <= sysdate and spct.end_date >= sysdate) or spct.demit_indicator='0')
--order by t.school_cycle_day
UNION
SELECT '','1','','','' from DUAL
UNION
SELECT '','2','','','' from DUAL
UNION
SELECT '','3','','','' from DUAL
UNION
SELECT '','4','','','' from DUAL;
Вывод:
Course Jour Legal_first_name Legqal_surname Room_no
PPL4OO-03 2 François Belle-Isle 1-139
SBI4UU-02 4 Louise Bérubé 1-155
TFC4EE-02 3 Gino Proulx 1-127
1
Спасибо за любую помощь, которую вы можете предоставить!