SQL подзапрос, внутренний запрос - PullRequest
0 голосов
/ 08 марта 2020

В чем здесь проблема? Я использую подзапрос и назвал его 't', но при запуске скрипта возникает ошибка, например -column неопределенно определенная. И нет никаких проблем во внутреннем запросе, он работает

select * from  
( select d.column_name , k.*, d.* 
  from user_constraints k, user_cons_columns d 
  where k.constraint_name=D.CONSTRAINT_NAME
    and D.COLUMN_NAME='REGION_ID' 
    and D.TABLE_NAME='COUNTRIES' 
    and k.constraint_type='R'
)  t,
user_constraints v 
where t.R_constraint_name=v.constraint_name;

enter image description here

1 Ответ

2 голосов
/ 08 марта 2020

Проблема здесь:

select * 
from  (select d.column_name,
              k.*,              --> this
              d.*               --> this
       from user_constraints k,
            user_cons_columns d 
       where k.constraint_name = D.CONSTRAINT_NAME
         and D.COLUMN_NAME = 'REGION_ID' 
         and D.TABLE_NAME = 'COUNTRIES' 
         and k.constraint_type='R'
       ) t,
       user_constraints v 
where t.R_constraint_name = v.constraint_name;

Поскольку обе таблицы содержат столбцы с одинаковыми именами столбцов (в данном случае это столбец constraint_name), Oracle не может определить, какие из них вы ' перевыбор. Вы должны выбрать интересующие вас столбцы и - если они имеют одно и то же имя - использовать aliases .

Например:

SQL> select *
  2  from  (select d.column_name,
  3                k.r_constraint_name,
  4                k.table_name,
  5                d.constraint_name   d_constraint_name,     --> this
  6                k.constraint_name   k_constraint_name      --> this
  7         from user_constraints k,
  8              user_cons_columns d
  9         where k.constraint_name = D.CONSTRAINT_NAME
 10           and D.COLUMN_NAME = 'DEPTNO'
 11           and D.TABLE_NAME = 'DEPT'
 12           and k.constraint_type='R'
 13         ) t,
 14         user_constraints v
 15  where t.R_constraint_name = v.constraint_name;

no rows selected

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...