Надо сделать отчёт, для учеников кто какой экзамен выбрал. Ниже кинул как нужно раскидать будет.
список учеников, чуть выше предметы, и напротив каждого предмета и ученика тип экзамена.
Проблемка в том что у меня получается одним запросом выбрать только все предметы, другим запросом ученика с выбранными предметами. Ну и третим список всех учеников класса.
Как крутить вертеть не пробовал запросами упростить ни насколько не получается , не хватает знаний, )) а в пыхе тоже не знаю как из этого слепить что-то путёвое. Постараюсь ниже показать свясь таблиц. Может кто-то что-то сможет подсказать..
# 1 таблица где предметы типы, и.т.д
`exam_subjects` : `id`, `label`
# 2 свясь с 1 таблицей а также с 3
`exam_rel` : `schid`, `exam_id`
# 3
`rel_pupil` : `schid`, `pupil`, `exam`
получить всех учеников.. номер класса имеем :
$q = "SELECT DISTINCT up.USER_NAME, up.USER_SURNAME
FROM SCH#_PUPIL p
INNER JOIN SCH#_USER u ON p.ID=u.ID
INNER JOIN ED_USERPASS up ON u.GLOBALID = up.GLOBALID
WHERE p.CLASS = $class_no";
Вообще запрос я пишу так:
$sql2 = "
SELECT e.LABEL # тут спец. убрал половину
FROM ED_MOD_EXAM_2013_SUBJECTS e
INNER JOIN ED_MOD_EXAM_2013_REL er ON er.EXAM_ID = e.ID AND er.SCHID = :schid
LEFT JOIN ED_MOD_EXAM_2013_REL_PUPIL rp ON rp.EXAM = e.ID AND rp.SCHID = :schid AND rp.PUPIL IN (" . implode(",", $pupilsId) . ") # если запрос с этой строкой то получаю учеников предметы которые они выбрали... Но тогда список всех экз этой школы (SCHID) не полный.
WHERE e.TYPE_CLASS_NO = 12
ORDER BY e.TYPE_ISK_EGZ ASC";
Буду рад любой помощи, если что-то не ясно попробую по другому уточнить либо дать какую-то информацию не достающию могу.