Когда я выполняю запрос, приведенный ниже, я не получаю никаких результатов:
SELECT
S.FirstName, S.LastName, S.StudentId, Y8.SectionId
FROM
SR_Students AS S
INNER JOIN
SR_Student_Classes AS Y7 ON
S.StudentId = Y7.StudentId
AND S.IsActive = 1 AND S.Gender LIKE 'M%'
AND Y7.TermId = 21 AND Y7.CampusId = 1 AND Y7.ClassId = 7 AND Y7.IsActive = 1
INNER JOIN
SR_Student_Classes AS Y8 ON
Y7.StudentId = Y8.StudentId
AND Y8.TermId = 26 AND Y8.CampusId = 7 AND Y7.ClassId = 8 AND Y8.IsActive = 1
Однако, когда я делю его (как показано ниже), я получаю 59 возвращаемых строк:
; WITH Y7 AS (
SELECT S.StudentId, S.FirstName, S.LastName, C.ClassID, C.SectionId, C.TermID, C.CampusId
FROM
SR_Student_Classes AS C
INNER JOIN SR_Students AS S ON C.StudentId = S.StudentId
WHERE
C.TermId = 21 AND C.CampusId = 1 AND C.ClassId = 7 AND C.IsActive = 1
AND S.Gender = 'M' AND S.IsActive = 1
)
, Y8 AS (
SELECT S.StudentId, S.FirstName, S.LastName, C.ClassID, C.SectionId, C.TermID, C.CampusId
FROM
SR_Student_Classes AS C
INNER JOIN SR_Students AS S ON C.StudentId = S.StudentId
WHERE
C.TermId = 26 AND C.CampusId = 7 AND C.ClassId = 8 AND C.IsActive = 1
AND S.Gender = 'M' AND S.IsActive = 1
)
SELECT
Y8.FirstName, Y8.LastName, Y8.StudentId, Y8.SectionId
FROM
Y7 AS Y7
INNER JOIN
Y8 AS Y8 ON Y7.StudentId = Y8.StudentId
Я знаю, что второй запрос правильный, потому что я знаю основные данные.
Но почему первый запрос не работает?В конце концов, это все внутренние соединения?
Я также пытался переместить большинство условий внутреннего соединения 1-го запроса в предложение WHERE, это не имело никакого значения (учитывая, что они являются внутренними объединениями, я не ожидал никакой разницы)