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

Как выбрать одну запись из бд, а если ее нет

выбрать другую, нужно это для языков, к примеру пользователь запрашивает новости на английском, но такой нет, а есть на русском, значит выбрать ее на русском?

перепробовал or но тогда идет выборка 2-х сразу если есть на обеих языках, с условием case тоже выбирает сразу обе или вообще ничего…

11 ответов

18 просмотров

Пробуешь выбрать на первом, если нет записи Делаешь выборку ВТОРОЙ раз на другом языке

Сергей- Автор вопроса
Os Well
Какая структура бд?

news: id, language_id, content, created_at, updated_at languages: id. name, code, created_at, updated_at

Сергей- Автор вопроса
Oleksandr Pavlenko 🌚
Зачем?)

потому что в коде 100500 условий не хочу городить, да и если нужно будет это делать в разных местах и для разных механизмов, это будет дублироваться

Сергей
news: id, language_id, content, created_at, update...

Хм, а где общий идентификатор для новости?

Сергей
news: id, language_id, content, created_at, update...

Я вижу у новости id языка, но не вижу связующую таблицу

Сергей
1 запросом нужно сделать

join по дефолтному языку и coalese в селекте?))

Сергей- Автор вопроса
Os Well
Хм, а где общий идентификатор для новости?

это пример просто, реальная бд очень сложная, и описать ее тут не представляется возможным, тут не в том делал какая бд, а сам механизм таких запросов. в каждой из таблиц (берем условно любую какую придумам) в этой таблице есть поле которое указывает на каком языке данная запись language_id таких записей может быть от одной до столько сколько языков на сайте, и нужно сделать так чтоб при выборке на каком-то языке на котором нету записи, выбрать запись под под любым id из базы languages или дефолтный если такое поле есть в таблице языком, но это уже полет фантазий как там и что будет, главное как делать выборки выбрать что-то, а если этого нет выбираем другое, и самое главное если есть записи на всех языках выбрать только ту на которой выбирается

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

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

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
Карта сайта