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 ответов

9 просмотров

Я бы внешним запросом для начала сделал. То есть внутренний — как был, и вокруг него всякий там ещё один 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.

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта