Запрос SQL Server, чтобы узнать, равен ли идентификатор в столбце другому в другом столбце - PullRequest
0 голосов
/ 20 декабря 2011

Я часами пытался создать этот запрос, и мне нужна ваша помощь, чтобы я мог его выполнить. Это таблица Students (сделанная из внутренних соединений):

SpecialtyChosenID  StudentID    Subject    SubjectSpecialtyID
5ABFB416-8137         15        Math          A1EBF3CB-E899
5ABFB416-8137         15        English       A1EBF3CB-E899 

Информация в нем означает, что студент с идентификатором нет. 15 выбрал специальность с идентификатором 5ABFB416-8137

Два предмета, которые он сдал (математика и английский), относятся к специальности с идентификатором A1EBF3CB-E899

Каков будет запрос, чтобы узнать, относятся ли пройденные предметы к специальности, выбранной студентом?

Подсчет количества предметов с тем же SubjectSpecialtyID, что и SpecialtyChosenID, и наоборот.

Большое спасибо

Ответы [ 4 ]

0 голосов
/ 20 декабря 2011
CASE WHEN SpecialtyChosenID = SubjectSpecialtyID THEN 1 ELSE 0 END AS specialty
0 голосов
/ 20 декабря 2011

Если вам нужен только список подходящих предметов и у вас есть SpecialtyChosenID, вы можете сделать что-то вроде

SELECT * FROM Students
WHERE SubjectSpecialtyID = SpecialityChosenID
0 голосов
/ 20 декабря 2011

Вы можете сделать самостоятельное присоединение.При этом определяется количество предметов, которые учащийся изучает в соответствии с выбранными специальностями студента.

SELECT l.SpecialtyChosenID, l.StudentID, Count(Distinct r.Subject) FROM Students l
LEFT JOIN Students r ON (l.StudentID=r.StudentID AND l.SpecialityChosenID=r.SubjectSpecialityID)
GROUP BY l.SpecialtyChosenID, l.StudentID

Однако это довольно неэффективно при использовании данной структуры таблицы.Если у вас есть таблица с перечнем студентов по их специальностям, а другая - с предметами и специальностями, а третья - с учениками по предметам, было бы лучше построить этот запрос на основе базовых данных, а не на основе полученных данных.

0 голосов
/ 20 декабря 2011
SELECT * FROM Students WHERE SpecialtyChosenID = SubjectSpecialtyID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...