Моя база данных такова:Пожалуйста, помогите найти в этом SQL-запросе
Существует несколько курсов в колледже. Курс далее делится на несколько потоков. В потоке есть несколько объектов, которые, в свою очередь, имеют несколько тем. Наконец, есть несколько заметок для темы, потока, темы и темы.
курс -> Струйные -> Предметы -> Темы -> Заметки
Я хочу написать запрос на выборку, чтобы получить высоты птичьего полета количество нот в данном курсе. Я хочу это -
MBA (Всего Notes Count - 5) - Курс
HR (Всего Notes Count - 5) - Streams
Sub A (Всего Notes Count - 5) - Тема
темы 1 (Все Примечание Count - 2) - тема
тема 2 (Все Примечание Count - 3)
В приведенном выше примере Sub A и Sub B содержит в общей сложности 5 заметок, которые отображаются против HR.
Пожалуйста, помогите мне в написании запроса для этого. Запрос должен быть очень быстрым.
Я прилагаю свой сценарий. Я могу думать о написании нескольких подзапросов, но я не думаю, что это будет оптимизированный метод.
select MC.CourseName,MS.StreamName,MSub.SubjectName,MT.TopicName,MN.NoteName
from Master_Course MC
JOIN Master_Stream MS ON MC.CourseId = MS.CourseId
JOIN Master_Subject MSub ON MS.StreamId = MSub.StreamId
JOIN Master_Topics MT ON MSub.SubjectId = MT.SubjectId
JOIN Master_Notes MN ON MT.TopicId = MN.TopicId
простого соединение не будет делать ... нет необходимости делать какую-либо хитрую вещь, которую я предполагаю, внешний вид прямо. – johnny
Не могли бы вы изложить определения таблиц и ожидаемый результат? Правильно ли, что вы хотите увидеть количество заметок на всех уровнях иерархии? Если это так, вам нужно будет выполнить внешние подключения в подзапросах. Я бы не стал беспокоиться о производительности, пока вы не вернете ему нужные данные. –
Я отредактировал свой вопрос. Я на самом деле хочу знать счет для каждого курса, потока, темы и темы. – Lakshay