Т.е. что бы запрос вида:
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()
mysql_num_rows()
Спустя 5 минут, 5 секунд (3.07.2012 - 19:05) Guest написал(а):
mysql_num_rows() - это пхп как бы...
Я выше описал задачу. Необходимо при отсутствии результатов выборки, в поле "ранк" вернуть 0.
Требуется это именно так, поскольку я крайне упростил запрос, локализовав проблемный участок. На самом деле там вложенная выборка и необходимо что бы она возвращала всегда результат, поскольку сравнение идёт с этим результатом
Я выше описал задачу. Необходимо при отсутствии результатов выборки, в поле "ранк" вернуть 0.
Требуется это именно так, поскольку я крайне упростил запрос, локализовав проблемный участок. На самом деле там вложенная выборка и необходимо что бы она возвращала всегда результат, поскольку сравнение идёт с этим результатом
Спустя 54 секунды (3.07.2012 - 19:06) Guest написал(а):
в смысле сравнение в другой части запроса
Спустя 29 минут, 35 секунд (3.07.2012 - 19:35) Guest написал(а):
Кое что вышло... Я тупанул в 1м моменте с синтаксисом ифа. Условие сделал, а выборку нет. Но всё равно проблему не решило.
Кому понадобится этот этап - пишу. Результат он достигает но тут дабл запрос, что само по себе криво и лично меня не устраивает
Т.е. таким образом результат будет верным, но выше описал что в нём не нравится. Логично было бы сохранить результат выборки в переменную. Но этого не получается
Т.о. в поле ранк находится поле [Blob]
Кому понадобится этот этап - пишу. Результат он достигает но тут дабл запрос, что само по себе криво и лично меня не устраивает
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 написал(а):
Так же вариант такого плана работает:
но это не 1 запросом... Необходимо таки 1
У меня закончились идеи...
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 написал(а):
>_< вот это я гоню. Да так работает.
Уже перепробовал уйму вариантов. Походу переутомился вчера)
Спасибо за ответ
Уже перепробовал уйму вариантов. Походу переутомился вчера)
Спасибо за ответ