Как мне выполнить поиск по запросу, используя другие условия? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть запрос, который извлекает учащихся из шаблона Activity, который является потомком модуля. Некоторые из шаблонов заданий являются сиротами (т. Е. Не имеют родителя модуля в зачислении учащегося), и я хочу определить шаблоны заданий, которые являются осиротевшими, НО, где ученик зачислен в родительский модуль, чтобы я мог заново связать их. Длинный запрос, который у меня до сих пор, показан ниже, и он работает по большей части, он также извлекает осиротевшие шаблоны действий, у которых нет учащегося модуля на зачисление учащегося;

--this first part looks for Activity Template enrolments for a student

    select 
    pers.p_surname
    ,pers.p_forenames
    ,s_studentreference
    ,e_id
    ,e_start
    ,e_end
    ,e_parent
    ,e_student
    ,e_module
    ,e_reference
    ,e_name
    ,e_type
    from capd_moduleenrolment, capd_student, capd_person pers
    where e_type='ACTTMPL'
    and e_start>='01-Sep-2019'
    and e_student = s_id
    and pers.p_id = s_id
    and e_parent not in --this clause then looks for that enrolment whose parent does not exist in the following query which retrieves Activity Template enrolments which have a parent

    --this sub-query then retrieves Activity Templates with a parent Module enrolment on the student's record

        (select 
        module.e_id 
        from capd_moduleenrolment template
        ,capd_student
        ,capd_moduleenrolment module
        where template.e_type='ACTTMPL'
        and module.e_type='MOD'
        and template.e_start>='01-Sep-2019'
        and template.e_student = s_id
        and template.e_parent = module.e_id)

--this part of the query below ensures that only the orphaned Activity Template enrolments which are retrieved have a similar reference to the Module enrolment i.e. I trimmed the Module reference so that the query checks the Module reference (before the session code like 15PMUH026-A19/20) against the Activity Template (before the underscore like 15PMUH026_L1) to ensure the student is enrolled on the Module from which the Template has been unlinked.

    and SUBSTR (e_reference, 1, INSTR (e_reference, '_') - 1) in

    (select SUBSTR(e_reference, 0, LENGTH(e_reference) - 7)
    from 
    capd_student stud
    ,capd_moduleenrolment moduenrol
    WHERE moduenrol.e_student = stud.s_id
    AND moduenrol.e_start >='01-Sep-2019'
    and MODUenrol.e_status='L'
    and moduenrol.e_type='MOD')

    order by p_surname

Обратите внимание, чтоПример модуля, который я предоставил, - 15 PMUH026-A19/20, а код сессий - «A19 / 20), выделяющий этот учебный год. Следовательно, дочерним шаблоном деятельности для этого модуля будет 15 PMUH026_L1.

Итак, в двух словах, мне нужно, чтобы мой запрос дал мне список шаблонов действий, в которые зачислен учащийся (в данном случае 15PMUH026_L1), но действиеШаблон не связан с родительским модулем (15 PMUH026-A19/20 в данном случае), НО студент зачислен на оба. По сути, запрос должен искать учеников, зачисленных на шаблон деятельности 15PMUH026_L1 и зарегистрированных на его родительский модуль 15 PMUH026-A19/20 (запрос ищет совпадение, чтобы убедиться, что ссылка на шаблон активности перед подчеркиванием совпадает, а регистрация в модуле - докод сеанса (A19 / 20), где шаблон не связан с родителем.

Заранее благодарен за помощь.

С наилучшими пожеланиями,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...