Новое в программировании: почему я не могу использовать псевдоним встроенного представления в Oracle SQL?
Я новичок в программировании, и я учу себя ORACLE SQL с учебником из дома. Мне было интересно, если кто-нибудь может дать мне объяснение, почему этот скрипт не работает. Я был в состоянии сделать это альтернативными способами и получить ответ, но я просто хочу понять основы того, почему я не могу использовать псевдоним для встроенного представления. Благодарю.
SELECT * FROM
(
(SELECT * FROM SECTION WHERE INSTRUCTOR='HERMANO') s
JOIN Grade_report g
ON s.section_ID=g.section_id
) v
JOIN Student Stu
ON stu.stno=v.student_number
Возвращает: "Команда SQL не завершена должным образом"
Таблица Grade_report имеет столбцы: section_number, section_ID, Grades;
Таблица Student содержит столбцы: stno (номер студента);
Таблица Раздел имеет столбцы: section_ID, Инструктор;
1 ответ
Это не работает, потому что часть, которую вы пытаетесь дать псевдоним v
неверный запрос:
(
(SELECT *
FROM SECTION
WHERE INSTRUCTOR='HERMANO') s
JOIN Grade_report g
ON s.section_ID=g.section_id
) v
Вы можете сделать его действительным, добавив дополнительный выбор внутри этого фрагмента:
SELECT *
FROM
( SELECT * /* This is new */
FROM
(SELECT *
FROM SECTION
WHERE INSTRUCTOR='HERMANO') s
JOIN Grade_report g
ON s.section_ID=g.section_id
) v
JOIN Student Stu
ON stu.stno=v.student_number
Или вы можете просто удалить этот псевдоним и иметь два объединения на одном уровне:
SELECT *
FROM
(SELECT *
FROM SECTION
WHERE INSTRUCTOR='HERMANO') s
JOIN Grade_report g
ON s.section_ID=g.section_id
JOIN Student Stu
ON stu.stno=v.student_number
Что по сути так же, как:
SELECT *
FROM SECTION s
JOIN Grade_report g
ON s.section_ID=g.section_id
JOIN Student Stu
ON stu.stno=v.student_number
WHERE s.INSTRUCTOR='HERMANO'