[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вернуть 0 при пустом значении
Guest
Как вернуть 0, если выборка вернула 0 строк.
Т.е. что бы запрос вида:
SELECT rank FROM `tblname` WHERE id=123
вернул 0, если записей с таким айди нету.

Варианты которые не работают :
SELECT CAST(rank, SIGNED) FROM `tblname` WHERE id=123

if((SELECT rank FROM tblname WHERE id=123)>=0,1,0) --- что бы хотя бы 1 вернуло, для проверки

SELECT ISNULL(`rank`) FROM tblname WHERE id=123

ISNULL(SELECT `rank` FROM tblname WHERE id=123)

Вероятно не написал ещё пробуемые варианты, но суть в другом - я так и не нашел решения, сделал через ПХП в итоге, но лучшее решение было бы с помощью мускула

Собсно вопрос - можно ли сделать это мускулом? Если да, то как



Спустя 17 минут, 47 секунд (3.07.2012 - 19:00) rooor написал(а):
дык если записей нет, то и выбирать нечего
mysql_num_rows()

Спустя 5 минут, 5 секунд (3.07.2012 - 19:05) Guest написал(а):
mysql_num_rows() - это пхп как бы...
Я выше описал задачу. Необходимо при отсутствии результатов выборки, в поле "ранк" вернуть 0.

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

Спустя 54 секунды (3.07.2012 - 19:06) Guest написал(а):
в смысле сравнение в другой части запроса

Спустя 29 минут, 35 секунд (3.07.2012 - 19:35) Guest написал(а):
Кое что вышло... Я тупанул в 1м моменте с синтаксисом ифа. Условие сделал, а выборку нет. Но всё равно проблему не решило.
Кому понадобится этот этап - пишу. Результат он достигает но тут дабл запрос, что само по себе криво и лично меня не устраивает

SELECT IF(
(
SELECT `rank` FROM `tblname` WHERE id=112)>=0,
(
SELECT `rank` FROM `tblname` WHERE id=112)
,
0) as rank

Т.е. таким образом результат будет верным, но выше описал что в нём не нравится. Логично было бы сохранить результат выборки в переменную. Но этого не получается

SELECT IF((SELECT (@aaa:=`rank`) FROM `tblname` WHERE id=112)>=0,@aaa,0) as rank


Т.о. в поле ранк находится поле [Blob]

Спустя 1 минута, 49 секунд (3.07.2012 - 19:37) Guest написал(а):
Так же вариант такого плана работает:
SET @aaa:=(SELECT `rank` FROM `table` WHERE id=112);
SELECT IF(@aaa>=0,@aaa,0) as rank


но это не 1 запросом... Необходимо таки 1
У меня закончились идеи...

Спустя 15 часов, 28 минут, 6 секунд (4.07.2012 - 11:05) Guest написал(а):
ап

Спустя 29 минут, 7 секунд (4.07.2012 - 11:34) Placido написал(а):
SELECT (IF(COUNT(`rank`)>0, `rank`, 0)) AS `rank` FROM `table` WHERE id=112;

Спустя 18 минут, 18 секунд (4.07.2012 - 11:53) Guest написал(а):
>_< вот это я гоню. Да так работает.
Уже перепробовал уйму вариантов. Походу переутомился вчера)
Спасибо за ответ wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.