возвращаемое значение из вложенного sql - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть следующий SQL, и я хочу, чтобы столбец order_item_wo_id возвращал значение NULL, если элемент не существует во вложенном sql, и возвращает значение столбца oi.cop_workorder_id, если он существует.

Как мне это сделать?

SELECT 
    cop.wo_id,
    CASE
     WHEN EXISTS (SELECT oi.cop_workorder_id 
            FROM oseo_orderitem  oi
            WHERE oi.cop_workorder_id = cop.wo_id) THEN 
            oi.cop_workorder_id
     ELSE null
    END AS order_item_wo_id
FROM oseo_cop_wo cop
where cop.wo_id = '123';

Похоже, что oi.cop_workorder_id не распознается за пределами вложенного sql.

ОШИБКА: отсутствует запись предложения FROM для таблицы "oi"

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Если я что-то упустил, кажется, вы слишком усложняете это. Просто используйте левое соединение:

SELECT 
    cop.wo_id,
    oi.cop_workorder_id AS order_item_wo_id
FROM oseo_cop_wo AS cop
    LEFT JOIN oseo_orderitem AS oi
        ON oi.cop_workorder_id = cop.wo_id
WHERE cop.wo_id = '123';
1 голос
/ 21 февраля 2012

использование может использовать функцию COALESCE . Он работает аналогично функции Oracle NVL. Однако у меня нет PostgreSQL для написания и проверки этого.

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