Добавить еще одну таблицу в пункт Где - PullRequest
0 голосов
/ 01 декабря 2018

Я использую БД Oracle.У меня есть статический запрос типа

SELECT * FROM TESTSCHEMA.TABLE_A WHERE LOAN_ID = :LOAN_ID

Остальное, где условие приходит из таблицы.

Теперь мы столкнулись со сценарием, в котором нам нужно ввести новую таблицу, если один столбец в TABLE_ANULL, мне нужно принять значение из TABLE_B. Мы не ищем изменения или развертывания кода, вместо этого, если мы можем обновить в таблице.

SELECT
    *
FROM
    TESTSCHEMA.TABLE_A
WHERE
    LOAN_ID = :LOAN_ID
    AND
    (
    /* if COLUMNA is NULL in TABLE_A
       then i need to pull value from TABLE_B in the same select statement */
    )

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Моя интерпретация ... Если вы хотите ограничить данные, возвращаемые на основе columnA, когда они имеют значение, но когда они не имеют значения (NULL), используйте columnB из таблицы B ... для ограниченияЭто;затем объедините & подзапрос должен это сделать.

Или вы можете заменить весь подзапрос скалярной функцией и вызвать ее.

SELECT *
FROM TESTSCHEMA.TABLE_A
WHERE LOAN_ID = :LOAN_ID
  AND COALESCE(COLUMNA,(SELECT ColumNName 
                        FROM table_B 
                        WHERE [Some Limits to get 1 record always]) = DesiredValue
  • Заменить ColumnName желаемым столбцом из таблицы_B
  • Заменить DesiredValue значением, с которым вы хотите сравнить столбец A или ColumnB.
  • ДобавитьГде условие ограничивает table_B, чтобы гарантировать, что вы всегда получите только 1 запись назад.

Или ...

SELECT *
FROM TESTSCHEMA.TABLE_A
WHERE LOAN_ID = :LOAN_ID
  AND COALESCE(COLUMNA,GetBValueWhenAValueNull(Paramaters?)) = DesiredValue

Но так как это потребует развертывания / изменения кода ...не угадаю

0 голосов
/ 01 декабря 2018

Что вы можете сделать, это удалить значения NULL из таблицы A

UPDATE TABLE_A 
SET value = (SELECT TABLE_B.value 
             FROM TABLE_B
             WHERE TABLE_A.LOAN_ID  = TABLE_B.LOAN_ID  )
WHERE LOAN_ID = :LOAN_ID
AND  value is NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...