У меня есть три таблицы в MsSQL для хранения данных.
Во-первых, Дети содержат следующие строки ID, Имя, Возраст, FatherID, SchoolID
Второй содержит данные об их отцах, такие как FatherID, Имя, Возраст
Третий - Школа с SchoolID и SchoolName, Address и т. Д.
(Соотношение: у нескольких детей может быть один и тот же отец, очевидно :))
Я хочу перечислить всех членов семьи, связанных с данным SchoolID.
Я знаю решение на основе курсора:
* Курсор работает с двумя временными таблицами, на первом этапеотбор детей с заданным школьным образованием во временную таблицу (@tempfamilymembers).
Второй шаг - выбрать из этой таблицы отдельные жирные короли и сохранить их во второй временной таблице (@fatherids).
Затем я бы перебрал эти толстые животные, чтобы вставить отцов с соответствующими толстыми птицами.(из @fatherids) в первую временную таблицу (@tempfamilymembers).
Затем я могу выбрать все из @tempfamilymembers для завершения запроса *
Решение на основе курсора слишком сложно, иОтносительно медленный плюс, я слышал, пока циклы показывают лучшую производительность, а подход, основанный на множестве, был бы еще лучше.
Мой вопрос: могу ли я достичь этого каким-либо образом, не создавая курсор? (Я хочу перечислить отцов, присутствующих в этом списке, только один раз, даже если у него более одного ребенка.)