Ваш запрос полностью действителен и работает в sqlplus точно так, как он должен:
14:04:01 (41)[email protected]> l
1 SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME AS FULLNAME
2 FROM EMPLOYEES
3 WHERE (JOB_ID, DEPARTMENT_ID)
4 IN (SELECT JOB_ID, DEPARTMENT_ID FROM JOB_HISTORY)
5* AND DEPARTMENT_ID=80
14:04:05 (41)[email protected]>/
34 rows selected.
Elapsed: 00:00:00.01
Вы сталкиваетесь с ORA-00923, только когда у вас есть синтаксическая ошибка. Например:
14:04:06 (41)[email protected]> ed
Wrote file S:\spool\sandbox\BUF_HR_41.sql
1 SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME AS FULLNAME X
2 FROM EMPLOYEES
3 WHERE (JOB_ID, DEPARTMENT_ID)
4 IN (SELECT JOB_ID, DEPARTMENT_ID FROM JOB_HISTORY)
5* AND DEPARTMENT_ID=80
14:05:17 (41)[email protected]>/
SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME AS FULLNAME X
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
Возможно, вы сделали это при копировании запроса с sqldeveloper на sqlplus? Вы уверены, что ваш пост содержит точно, символ-к-символу, запрос, который вы на самом деле пытаетесь выполнить? Я бы обратил больше внимания на текст запроса и сообщение об ошибке - он обычно указывает на ошибку, например *
под X
в моем примере.
Только запрос: Почему вы используете 'DEPARTMENT_ID' в своем месте где дважды? Если 'DEPARTMENT_ID' должно быть' 80', вы можете просто получить 'job_id' в своем внутреннем запросе? – heretolearn
В SQL Plus Client вы можете разбить свой запрос на несколько строк, чтобы изолировать проблему. – heretolearn
Я знаю, но я просто практиковал тему подзапроса. У меня нет той же базы данных, в которой есть книга, поэтому я делаю этот запрос на практике. xDDDDD –