Задать вопрос
kashamalasha
@kashamalasha

Как вывести NULL, если нет строк?

Опытные товарищи, нужна ваша помощь. Есть следующая схема:
aa46e9971cfd42a3a9181c8de79bca09.png

Есть запрос:
SELECT t.id         AS "ID",
       t.val        AS "VALUE",
       te.ext_val   AS "EXT_VALUE",
       t.val * 2,2  AS "RATED VALUE"
FROM   table_main t
JOIN   table_ext te ON t.id = te.id
WHERE  t.id = &id
AND    t.val > 0
AND    te.ext_name = 'ADD_ATTR'


Пример данных:
table_main:
id  |  val
-----------
1      100
2      150

table_ext;
id  |  ext_name     |  val
---------------------------
1	ADD_ATTR     200
1	ADD_VAL      5
2       ADD_VAL      10

В том случае, если условие te.ext_name = 'ADD_ATTR' не выполняется, т.е. подобных записей нет, то запрос возвращает пустое множество. Как изменить запрос, чтобы он заполнял поле te.ext_val AS "EXT_VALUE" в результирующей таблице как NULL в данном случае?

Заранее спасибо.

P.S. LEFT JOIN в данном запросе не срабатывает
  • Вопрос задан
  • 687 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
LEFT JOIN `table_ext` AS `te` ON `te`.`id` = `t`.`id` AND `te`.`ext_name` = 'ADD_ATTR'
Ответ написан
kashamalasha
@kashamalasha Автор вопроса
Разобрался. Не хватило опыта использования OUTER JOIN'а:

SELECT t.id         AS "ID",
       t.val        AS "VALUE",
       te.ext_val   AS "EXT_VALUE",
       t.val * 2.2  AS "RATED VALUE"
FROM   table_main t
LEFT OUTER JOIN table_ext te ON t.id = te.id 
                            AND te.ext_name = 'ADD_ATTR'
WHERE t.val > 0
AND   t.id = 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы