Правильная структура вопросов в oracle - PullRequest
0 голосов
/ 08 января 2020

У меня есть запрос

SELECT rep.id,
       rep.VALUE_NUMBER         
FROM IOT_STREAM_ANALYTICS_LOG_REPRESENTATION rep
where rep.VALUE_NUMBER in 
       ( select o.VALUE_NUMBER 
         from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION 
         where o.key = 'transaction' 
          and  o.parent in 
                     (select i.parent
                      from  IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  i 
                      where i.key = 'reader' 
                      and  i.VALUE_STRING = '4fa11d4e-1819-11ea-80f3-a0369f1c4dcb' 
        ) )  

Когда я делаю этот запрос, я получаю ответ enter image description here

То есть у меня другой идентификатор, как а также VALUE_NUMBER (1575706431704 и 1575700166708), и вы можете добавить и запросить столбец VALUE_STRING, чтобы иметь (4fa11d4e-1819-11ea-80f3-a0369f1c4dcb), как это. enter image description here

Это Я не хочу, чтобы ответ был

SELECT rep.id,
       rep.VALUE_NUMBER ,
          '4fa11d4e-1819-11ea-80f3-a0369f1c4dcb' as  VALUE_STRING

Я хочу, чтобы это имело место, когда я делаю запрос

SELECT rep.id,
       rep.VALUE_NUMBER 
FROM IOT_STREAM_ANALYTICS_LOG_REPRESENTATION rep
where rep.VALUE_NUMBER in 
            ( select o.VALUE_NUMBER
              from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
              where o.key = 'transaction' 
              and  o.parent in 
                      (select i.parent 
                       from  IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  i 
                       where i.key = 'reader' 
    ) )  

Каждый идентификатор имеет свой собственный i.VALUE_STRING. То есть мой вопрос обобщен, потому что он просит меня удалить «i.VALUE_STRING» из подзапроса?

1 Ответ

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

Если я понял ваше требование, вы хотите включить VALUE_STRING для записей reader в проекции, но не можете получить к нему доступ, поскольку записи reader похоронены во вложенном подзапросе.

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

with txn as 
       ( select o.VALUE_NUMBER as transaction_value_number
                , i.VALUE_STRING as reader_value_string
         from IOT_STREAM_ANALYTICS_LOG_REPRESENTATION o
              join IOT_STREAM_ANALYTICS_LOG_REPRESENTATION  i 
              on  o.parent = i.parent
         where o.key = 'transaction' 
          and  i.key = 'reader' )
SELECT rep.id,
       rep.VALUE_NUMBER,      
       txn.reader_value_string as VALUE_STRING   
FROM IOT_STREAM_ANALYTICS_LOG_REPRESENTATION rep
     join txn on rep.VALUE_NUMBER = txn.transaction_value_number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...