powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод значения 'Нет результатов' если поиск по таблице не дал результата
18 сообщений из 18, страница 1 из 1
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420285
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Не могу решить данный вопрос. Помогите, пожалуйста, понять можно ли его вообще решить средствами MySQL.
Есть таблица:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
+--+-----+
|id| name|
+--+-----+
|1 | A   |
+--+-----+
|2 | Null|
+--+-----+
|3 | B   |
+--+-----+


Запрос
Код: sql
1.
2.
SELECT IFNULL(name,'Без имени')
WHERE id=2


даёт результат 'Без имени'.
А запрос
Код: sql
1.
2.
SELECT IFNULL(name,'Нет результатов')
WHERE id=4


всё равно даёт NULL.
Можно ли как-то вывести значение 'Нет' для случаев когда SELECT не возвращает ни одного результата?
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420298
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа такого?
Код: sql
1.
2.
3.
4.
SELECT IFNULL(`name`, 'Без имени') AS  `result` FROM `table` WHERE `id`=4
UNION
SELECT 'Нет' AS  `result`
LIMIT 1   
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420310
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdowsЗапрос
Код: sql
1.
2.
SELECT IFNULL(name,'Без имени')
WHERE id=2


даёт результат 'Без имени'.
А запрос
Код: sql
1.
2.
SELECT IFNULL(name,'Нет результатов')
WHERE id=4


всё равно даёт NULL.
Нет. Первый запрос возвращает ОДНУ запись, а второй - НОЛЬ записей.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420314
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleТипа такого?
Код: sql
1.
2.
3.
4.
SELECT IFNULL(`name`, 'Без имени') AS  `result` FROM `table` WHERE `id`=4
UNION
SELECT 'Нет' AS  `result`
LIMIT 1   


Не совсем. Когда в результатах будет две и более записей, вернётся всё равно только одна.
Акина оставила правильный комментарий:
Akina Нет. Первый запрос возвращает ОДНУ запись, а второй - НОЛЬ записей.
Мне именно нужны случаи когда запрос возвращает НОЛЬ записей. Можно ли средствами MySQL вывести значение, что 'результатов нет', когда их действительно нет?
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420317
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slawdowsАкина оставила правильный комментарий:

Прошу прощения, если не угадал с полом, ответил машинально.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420329
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdowsМожно ли средствами MySQL вывести значение, что 'результатов нет', когда их действительно нет?Извратиться можно (например, как vkle показал), но это будет костыль.
Намного правильнее проверять на уровне клиентского скрипта/программы.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420336
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftИзвратиться можно (например, как vkle показал), но это будет костыль.
Намного правильнее проверять на уровне клиентского скрипта/программы.

miksoft, спасибо! Как-раз извращения не нужны. А вот на уровне клиента возникают проблемы со сравнением значения в этом случае.
Ок, попробую написать в поддержку клиента.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420337
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdowsна уровне клиента возникают проблемы со сравнением значения в этом случае.По-моему, получить количество записей в рекордсете (а на самом деле - просто проверить его на <EOF>) гораздо проще, чем тягать сами записи.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420339
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaПо-моему, получить количество записей в рекордсете (а на самом деле - просто проверить его на <EOF>) гораздо проще, чем тягать сами записи.
А рекордсет это как? Если не трудно можно "на пальцах" объяснить?
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420344
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slawdowsНе совсем. Когда в результатах будет две и более записей, вернётся всё равно только одна.Простите уж, не предполагал, что в Вашей таблице есть две или более записи с одинаковым id. Ну да и Вы об этом тоже скромно умолчали. В таком случае, мой вариант не годится.
Однако, если разместить требуемый функционал на клиентской стороне (это типовой подход к такого рода вопросам) не представляется возможным, то можно попробовать запихнуть его в хранимую процедуру. Сходу не подскажу, как именно.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39420385
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleПростите уж, не предполагал, что в Вашей таблице есть две или более записи с одинаковым id. Ну да и Вы об этом тоже скромно умолчали. В таком случае, мой вариант не годится.
Я тоже в свою очередь прошу прощения, пытался объяснить на уровне самого простого примера.
Для чёткого пониманию приведу конкретный кейс:
SQL запрос получает данные из таблицы по id. Строк в результатах может быть больше 1-ой. Величина строк неизвестна.
Нужно чтобы в результатах работы запроса, если количество строк рано 0, что-то выводилось.
Почему изначально привёл такой пример? Потому что в Navicat-е, в результатах, даже если нет строк всё равно выводится Null, вот он и сбивал с толку.

vkleОднако, если разместить требуемый функционал на клиентской стороне (это типовой подход к такого рода вопросам) не представляется возможным, то можно попробовать запихнуть его в хранимую процедуру. Сходу не подскажу, как именно.
Если в данном случае вопрос должен решать клиент, буду пробовать через поддержку. Если хранимая процедура допускается, было бы интересно посмотреть на какой-нибудь простой пример, скажу честно с ними ещё не знаком.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436216
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью поддержки клиента удалось найти обходной трюк:

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT id, name FROM table
WHERE id=4
UNION ALL
SELECT -1, 'Нет результатов' FROM dual
WHERE NOT EXISTS (
  SELECT id FROM table
  WHERE id=4)


В таком случае когда id есть, будут выводится значения по совпадениям, а когда нет - то только замещающий текст 'Нет результатов'.
Но они создали тикет в своей системе на улучшение, которое позволит получать такой текст автоматически.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436265
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это бред, причём идеологически, а не программно. Бредова сама идея заставлять SQL-сервер заниматься форматированием отображения данных, когда это целиком и полностью задача клиента.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436266
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представьте на минуту, что в таблице есть запись с id=4 и name='Нет результатов'...
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436293
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaБредова сама идея заставлять SQL-сервер заниматься форматированием отображения данных, когда это целиком и полностью задача клиента.
почему так критично?
форматирование даты , к прмеру, очень просто реализовать в запросе.
да и для форматирования чисел в mysql усть хорошие инструменты.
AkinaПредставьте на минуту, что в таблице есть запись с id=4 и name='Нет результатов'...
ну если автор пишет так, наверно, он гарантирует , что такого
id=4 и name='Нет результатов'
быть не может, ведь он пишет под конкретную задачу, а не абстрактную.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436301
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяформатирование даты , к прмеру, очень просто реализовать в запросе.
да и для форматирования чисел в mysql усть хорошие инструменты.
Это всё пригодно для очень простых случаев, когда данные, полученные от сервера, выливаются в тупой текстбокс или иной контрол, который про иные, кроме строкового, типы, даже не слышал. Да, такое бывает, не спорю... Но как только требуется что-то более сложное - используются специализированные средства отображения, скажем, сортирующие гриды, или дополнительная клиентская обработка, так сразу начнутся сложности.

вадяесли автор пишет так, наверно, он гарантирует , чтоВозможно. Но чаще автор просто не подумал о том, что решение должно рассчитываться не на основной поток данных, а на краевые условия и исключения. И когда дело доходит до финального тестирования, программа начинает обрастать костылями...
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436308
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЭто всё пригодно для очень простых случаев, когда данные, полученные от сервера, выливаются в тупой текстбокс или иной контрол, который про иные, кроме строкового, типы, даже не слышал. Да, такое бывает, не спорю... Но как только требуется что-то более сложное - используются специализированные средства отображения, скажем, сортирующие гриды, или дополнительная клиентская обработка, так сразу начнутся сложности.
не надо так критично, универсального варианта нет, я знаю много случаев , когда то же форматироване даты проще сделать в mysql, а для сортировки и фильтрации проще снова сделать запрос с фильтрами и сортировкой.
AkinaНо чаще автор просто не подумал о том, что решение должно рассчитываться не на основной поток данных, а на краевые условия и исключения. И когда дело доходит до финального тестирования, программа начинает обрастать костылями...
странная логика, ориентироваться на "автор не подумал" , а может постановщик задачи не подумал?

Akina. Но как только требуется что-то более сложное - используются специализированные средства отображения, скажем, сортирующие гриды
в некоторых случаях проще продублировать строковые данные - их числовыми эквивалентами, по ним и сортировать/фильтровать.
те же тавлицы в html - отображают дату как строку, и для сортировки надо сначала преобразовать в дату. а можно продублировать в тэг data- число , хранимое в mysql как дата, и сортировать по этому тэгу.
...
Рейтинг: 0 / 0
Вывод значения 'Нет результатов' если поиск по таблице не дал результата
    #39436598
slawdows
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Выбор данных действительно всегда происходит из таких таблиц, где значения 'Нет результатов' и быть не может, как не может быть букв в числах. Я понимаю что это голая теория, которая часто на практике не терпит таких допусков. Но даже ведь если представить, что Клиент научился отдавать такой результат - как понять разницу между тем: это значение из базы или результат 'Нет результатов'.

К тому же, это временное решение, которое на время заполнит пустоту в выводе в тех случаях, когда база не отдаёт результатов. В скором времени надеюсь этим будет заниматься Клиент.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод значения 'Нет результатов' если поиск по таблице не дал результата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]