[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: имитация Swith в MySQL
Kusss
SELECT 
SUM(
IF( l.type =1, l.price, 0 ) -
IF( l.type =2, l.price, 0 ) -
IF( l.type =21, l.price, 0 ) -
IF( l.type =22, l.price, 0 ) -
IF( l.type =23, l.price, 0 )
)
AS all_summa,
l.id_client,
u.tel
FROM
`logs` AS l
INNER JOIN
`user` AS u ON u.id = l.id_client AND u.tel != ''
WHERE
l.type IN ( 1, 2, 21, 22, 23 ) AND
l.id_client !=1
GROUP BY
l.id_client
ORDER BY
all_summa DESC

Все хорошо, пока не появляется условие которое можно написать на php(условно)
switch (MIN(l.type)) {
case 1:
$type = 1;
$summa_all += 'l.summa';
case 2:
$type = 2;
$summa_all -= 'l.summa';
case 21 или 22 или 23:
if ($type == 1) {
$summa_all -= 'l.summa';
}
if ($type == 2) {
$summa_all += 'l.summa';
}
}

В БД "type" 21,22,23 идут всегда после 1 или 2

Как это сделать в MySQL (и целесообзано ли ?), или построчно разобрать в php ?
Быстрый ответ:

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