Oracle SQL выберите в пределах выбора - PullRequest
1 голос
/ 13 февраля 2020

Таким образом, у меня есть reason, идентифицированный как некий идентификатор в таблице1. Мне нужно написать запрос, который выписывает значение причины, приведенное в таблице 2. Я надеюсь, что моего плохого engli sh было достаточно, чтобы объяснить мою проблему.

table1

    id  reason
  --------------
    1     1
    2     2
    3     1

table2

domain         value  meaning
------------------------------
table1.reason    1    example1
table1.reason    2    example2

Я пробовал этот выбор, но я получил ошибку "ORA-01427: однострочный подзапрос возвращает более одной строки", но если я добавлю max() в t2.meaning, он вернет мне значение example2, потому что максимальное значение = 2

select 
    t1.id
    (select t2.meaning
    from table2 t2, table1 t1
    where t2.value = t1.reason
    and t2.domain = 'table1.reason') as reason
from table1;

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 13 февраля 2020

Я почти уверен, что вам нужен коррелированный подзапрос, а не join:

select t1.id
       (select t2.meaning
        from table2 t2
        where t2.value = t1.reason and
              t2.domain = 'table1.reason'
       ) as reason
from table1;
...