172 похожих чатов

Ребят, такой вопрос. Допустим, я делаю left join к второй таблице. select

*
from t1
left join t2 on t2.fieldT1_id = t1.id

Соотстветственно, могут возникнуть ситуации, когда в t1 есть строки, но они не имеют связи со строками из 2-ой таблицы.
Тогда я получу null.

Вопрос: можно ли как-то в блоке left join указать условие, что если не выполняется условие t2.fieldT1_id = t1.id, то брать строку с t2.id=1.... Типа как default?

3 ответов

10 просмотров

Я бы внешним запросом для начала сделал. То есть внутренний — как был, и вокруг него всякий там ещё один left join t2_2 с условием t2.id is null and t2_2.id=1 или там coalesce у него на каждое поле в select-field в t2.

0x90-E Автор вопроса
Ilya Anfimov
Я бы внешним запросом для начала сделал. То есть в...

Да, вообще, я сделал с использованием coalesce. Но мне не нравиться в этом то, что я как-бы в коде хардкожу что-то, что лежит в таблице и по-идее, нужно брать из таблицы. Ибо, например, если в таблице поменяют значение, то придется его еще менять и в том/тех участке кода, где я это поменял. Еще я попробовал этот вопрос решить так: select * from t1 left join t2 on t2.fieldT1_id = t1.id or t2.id=3 В данном случае t2.id=3 - это id элемента, который должен отображаться по умолчанию. Но тут получается, что в коде опять таки придется делать хард-код. Но хотябы я указываю не конкретное значение других полей,а id. Это дает возможность менять значения других полей в t2, при этом на уровне кода ничего менять не потребуется. Если у кого-то есть более кошерные варианты решения вопроса, буду рад узнать!

0x90 E
Да, вообще, я сделал с использованием coalesce. Но...

Во втором-то случае всегда добавится строка с этим id.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта