У меня есть запрос, который выглядит следующим образом:Неожиданное поведение в подзапрос
SELECT 'FY2000' AS FY, COUNT(DISTINCT SGBSTDN_PIDM) AS CHEM_MAJORS
FROM SATURN.SGBSTDN, SATURN.SFRSTCR
WHERE SGBSTDN_PIDM = SFRSTCR_PIDM
AND SGBSTDN_TERM_CODE_EFF = (SELECT MAX(SGBSTDN_TERM_CODE_EFF)
FROM SATURN.SGBSTDN
WHERE SGBSTDN_TERM_CODE_EFF <= '200002'
AND SGBSTDN_PIDM = SFRSTCR_PIDM)
AND SGBSTDN_MAJR_CODE_1 = 'CHEM'
AND SFRSTCR_TERM_CODE BETWEEN '199905' AND '200002'
AND (SFRSTCR_RSTS_CODE LIKE 'R%' OR SFRSTCR_RSTS_CODE LIKE 'W%')
AND SFRSTCR_CREDIT_HR >= 1
Он возвращает счетчик 48, который я считаю, это правильно. Однако я не понимаю, почему подзапрос не нужен SATURN.SFRSTCR
в предложении FROM для ссылки SFRSTCR_PIDM
. Я думал, что подзапросы были самодостаточными и не могли увидеть остальную часть запроса?
Но, если я добавлю SATURN.SFRSTCR в подзапрос, счет будет изменен на 22. Если я возьму AND SGBSTDN_PIDM = SFRSTCR_PIDM
из подзапроса, число также изменится на 22. Может ли кто-нибудь объяснить это мне?