При использовании функции JOIN в Oracle у меня возникает вопрос о том, когда я использую дополнительные ALIAS в этом коде - PullRequest
0 голосов
/ 29 января 2020

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

Вот код, который я сейчас ищу.

SELECT S.*, D.DNAME
FROM STUDENT S, DEPARTMENT D
WHERE (SUBSTR(S.JUMIN,7,1),S.WEIGHT) IN (SELECT SUBSTR(JUMIN,7,1),MAX(WEIGHT)
FROM STUDENT GROUP BY SUBSTR(JUMIN,7,1))
AND S.DEPTNO1 = D.DEPTNO;

А вот ОТДЕЛ данные.

student data

А это СТУДЕНТ данные. enter image description here

Я получил результат, как хочу. Но у меня есть некоторые вопросы, когда я изменяю эту часть кода

WHERE (SUBSTR(S.JUMIN,7,1),S.WEIGHT) IN (SELECT SUBSTR(JUMIN,7,1),MAX(WEIGHT)

на эту

WHERE (SUBSTR(S.JUMIN,7,1),S.WEIGHT) IN (SELECT 
S.SUBSTR(JUMIN,7,1),MAX(S.WEIGHT)

То, что я делаю, это просто ставлю S перед JUMIN и ВЕС в строке3. Но когда я делаю это, он показывает мне все данные. enter image description here

Я думал, что JOIN ALIAS (которые S , D in этот код) используется как способ показать, что у меня есть две таблицы для использования, которые помечены S и D. S означает, что эти данные находятся в STUDENT и D находится в ОТДЕЛ . Но я думаю, что я понял это неправильно. Во всяком случае, я понятия не имею, как получается этот результат.

1 Ответ

1 голос
/ 29 января 2020

Это относится к вашей основной таблице, а не к таблице подзапросов.

WHERE (SUBSTR(S.JUMIN,7,1),S.WEIGHT) IN (SELECT 
S.SUBSTR(JUMIN,7,1),MAX(S.WEIGHT)

Ваш исходный запрос уже верен. В котором у вас уже есть новый набор результатов на основе вашей агрегации.

WHERE (SUBSTR(S.JUMIN,7,1),S.WEIGHT) IN (SELECT SUBSTR(JUMIN,7,1),MAX(WEIGHT)
...