Мне очень хорошо знакомы с базовыми SQL-запросами, однако я никогда не работал с запросом, который имеет дело с иерархическими данными.3-уровневый иерархический SQL-запрос
Я использую элемент управления TreeView Telerik, чтобы отобразить данные, относящиеся к школьной доске со следующей структурой:
--School "ABC"
----Class "Grade 1"
----Class "Grade 2"
------Student #1
------Student #2
--School "DEF"
----Class "Grade 1"
------Student #3
----Class "Grade 3"
TreeView находится в режиме с тремя состояниями флажков, поэтому каждый элемент может быть галочка , Поэтому, если отмечен один дочерний элемент, тогда будет также проверен родительский элемент, и при проверке родительского элемента будут проверены все дочерние элементы.
После проверки некоторых школ, классов и учащихся на следующем экране отображается информация о студентах на графике, который в настоящее время использует идентификаторы школы (если их несколько), чтобы выбрать всех учащихся этих школ.
Вот где это сложно. Используя приведенную выше структуру в качестве примера, я выбираю класс «Grade 1» из школы «ABC» и класс «Grade 3» из школы «DEF», который, в свою очередь, выберет студентов № 1 & # 2 И школы " ABC "&" DEF ".
Отдельные школы: ABC, DEF
Выбранные классы: Grade 1, Grade 3
Избранные Студенты: # 1, # 2
Как упоминалось ранее, мой текущий запрос SQL основано исключительно на знаке школы, и я знаю, что я не могу просто добавить еще два условия в предложение where, которое выглядит следующим образом:
AND ClassID IN ('Grade 1', 'Grade 3') --Note there is no primary key for classes, and I can't change that in my position..
AND StudentID IN (1,2)
как это также будет выбирать студент # 3 из другого класса титул «Grade 1»
Так что мой вопрос, как я объединить школы ID (ы), имя класса (ов), а также студенческий билет (s) в одно условие, которое решит эту проблему.
Edit:
Вот структура таблиц.
Вы хотите написать SQL-запрос, который будет возвращать все классы на основе списка школ и всех учащихся на основе списка классов? У вас не может быть 'SELECT', который будет возвращать все дети, поскольку классы и ученики имеют разные таблицы. – halfer