[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Насколько можно облегчить задачу в sql
sendxt
Всем здрасте, вобщем трабл у меня который не знаю как решить.
Надо сделать отчёт, для учеников кто какой экзамен выбрал. Ниже кинул как нужно раскидать будет.


список учеников, чуть выше предметы, и напротив каждого предмета и ученика тип экзамена.

Проблемка в том что у меня получается одним запросом выбрать только все предметы, другим запросом ученика с выбранными предметами. Ну и третим список всех учеников класса.

Как крутить вертеть не пробовал запросами упростить ни насколько не получается , не хватает знаний, )) а в пыхе тоже не знаю как из этого слепить что-то путёвое. Постараюсь ниже показать свясь таблиц. Может кто-то что-то сможет подсказать..


# 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"
;


Буду рад любой помощи, если что-то не ясно попробую по другому уточнить либо дать какую-то информацию не достающию могу.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.