powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос if else
9 сообщений из 9, страница 1 из 1
Упростить запрос if else
    #38617054
Код: sql
1.
2.
3.
4.
if(ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),
                 if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2)!=NULL,
       ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),
                 if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2),SUM(s.summ)) AS summ


В общем-то выглядит так
Код: sql
1.
if(x!=NULL,x,SUM(s.summ))AS summ


но вместо x вот это
Код: sql
1.
2.
ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),
                 if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2


хочется чтоб это чудо считалось 1 раз в запросе.
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617057
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM CASE
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617062
Это чудо хорошо работает и без CASE
Код: sql
1.
ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2)


но при выводе в приходится его 2 раза считать
Мол если результат не равен NULL, посчитать его второй раз и вывести, а если равен посчитать другое.
Хочу избавиться от этого второго раза.(посчитать его в какую-то переменную а потом уже ее результат в IF всунуть.)
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617070
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT @x:=...., if(@x!=NULL,@x,SUM(s.summ))AS summ ...
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617071
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуков,

не уверен, что правильно понял задачу...
IFNULL()
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617072
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
SELECT if(x!=NULL,x,SUM(s.summ))AS summ .... FROM
(SELECT .... as x FROM .....) AS xtable
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617073
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНиколай Жуков,

не уверен, что правильно понял задачу...
IFNULL()
он не хочет несколько раз вычислять
Код: sql
1.
s.price/100*(100+ms.margin)


и другие выражения, которые сперва вычисляются для сравнения, а 2 раз вычисляются для вывода
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38617074
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovmiksoftНиколай Жуков,

не уверен, что правильно понял задачу...
IFNULL()
он не хочет несколько раз вычислять
Код: sql
1.
s.price/100*(100+ms.margin)



и другие выражения, которые сперва вычисляются для сравнения, а 2 раз вычисляются для выводаМожет, я совсем уже сплю...
Код: sql
1.
2.
IFNULL(ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),
                 if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2),SUM(s.summ)) AS summ
...
Рейтинг: 0 / 0
Упростить запрос if else
    #38632300
Может, я совсем уже сплю...
Код: sql
1.
2.
IFNULL(ROUND((if(ms.type='percent',s.price/100*(100+ms.margin),
                 if(ms.type='add',s.price+ms.margin,s.price*ms.margin)))*c1*s._count,2),SUM(s.summ)) AS summ



Спасибо
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос if else
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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