Есть ли способ дать подзапросу псевдоним в Oracle 11G SQL?

StackOverflow https://stackoverflow.com/questions/3057930

Вопрос

Есть ли способ дать подзапрос в Oracle 11G псевдоним нравится:

select * 
from
    (select client_ref_id, request from some_table where message_type = 1) abc,
    (select client_ref_id, response  from some_table where message_type = 2) defg
where
    abc.client_ref_id = def.client_ref_id;

В противном случае есть способ присоединиться к двум подзам на основе клиента_REF_ID. Я понимаю, что есть я вступает в систему, но в базе данных я бегаю в себе, присоединиться, может занять до 5 минут (есть некоторая дополнительная логика в фактическом запросе, которую я работаю, но я определил, что я вступил в то, что вызывая проблему). Отдельные подзапросы занимают всего несколько секунд, чтобы завершить их. Запрос вступает в Self выглядит что-то вроде:

select st.request, st1.request
from
    some_table st, some_table st1
where 
    st.client_ref_id = st1.client_ref_id;
Это было полезно?

Решение

С ABC AS (выберите Client_Ref_id, запрос от quey_table, где message_type = 1) Выберите * из ABC Inner Join (выберите Client_ref_id, ответ от quote_table, где message_type = 2) defg на abc.client_ref_id = def.client_ref_Id;

Другие советы

У меня нет экземпляра Oracle для тестирования, но что вы опубликовали, должен быть действительным ANSI-89 присоединиться к синтаксису. Вот это в АНСИ-92:

SELECT *
  FROM (SELECT client_ref_id, request 
          FROM SOME_TABLE 
         WHERE message_type = 1) abc
  JOIN (SELECT client_ref_id, request 
          FROM SOME_TABLE 
         WHERE message_type = 1) defg ON defg.client_ref_id = abc.client_ref_id

Ваш запрос должен быть в порядке.

Альтернатива будет:

select abc.client_ref_id, abc.request, def.response
from   some_table abc,
       some_table def
where  abc.client_ref_id = def.client_ref_id
and    abc.message_type = 1
and    def.message_type = 2;

Я бы не был удивлен, если Oracle переписал запросы, чтобы план был бы таким же возможным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top