Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос if else / 9 сообщений из 9, страница 1 из 1
16.04.2014, 23:26:27
    #38617054
Упростить запрос if else
Код: 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
16.04.2014, 23:30:18
    #38617057
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос if else
RTFM CASE
...
Рейтинг: 0 / 0
16.04.2014, 23:39:32
    #38617062
Упростить запрос if else
Это чудо хорошо работает и без 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
17.04.2014, 00:11:17
    #38617070
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос if else
Код: sql
1.
SELECT @x:=...., if(@x!=NULL,@x,SUM(s.summ))AS summ ...
...
Рейтинг: 0 / 0
17.04.2014, 00:12:50
    #38617071
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос if else
Николай Жуков,

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

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


и другие выражения, которые сперва вычисляются для сравнения, а 2 раз вычисляются для вывода
...
Рейтинг: 0 / 0
17.04.2014, 00:21:37
    #38617074
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос if else
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
04.05.2014, 12:41:57
    #38632300
Упростить запрос if else
Может, я совсем уже сплю...
Код: 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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос if else / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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