@Starvings

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

Как получить ответ "no" (или любой требуемый), если запрос не находит искомое значение?
Пример таблицы:
62b2aa29dcdbf042249767.jpeg

Мне надо проверить есть ли запись для номера на конкретную дату. Именем можно пренебречь, колонка "busy" опциональна, думал с ней будет проще работать.

В результате запроса выдается только название колонки "busy".

SELECT busy FROM `all_reservs` WHERE dates ='27.06.22' AND number='22';


Пробовал:
SELECT IFNULL(busy, "no") AS busy FROM all_reservs WHERE dates ='27.06.22' AND number='22';

Но видимо действую не правильно, в результате все равно получаю только название колонки.
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT COALESCE( 
    (
        SELECT busy FROM `all_reservs` WHERE dates ='27.06.22' AND number='22' LIMIT 1
    ), 
    'no'
) AS busy;

Если запрос вернёт запись (с одним полем), скаляризация преобразует её в значение, и COALESCE вернёт это значение.
Если запрос не вернёт запись, скаляризация вернёт NULL, и COALESCE вернёт 'no'.
LIMIT страхует от возврата более чем одной записи. По-хорошему ещё надо добавить ORDER BY.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы