PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
jfr
Отправлено: 28 Ноября, 2012 - 11:51:11
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010
Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
Здравствуйте!
Этот запрос
CODE (
SQL ):
скопировать код в буфер обмена
SELECT
CASE WHEN B. Kassir IS NOT NULL THEN B. Kassir
WHEN C. Kassir IS NOT NULL THEN C. Kassir
WHEN D. cashier IS NOT NULL THEN D. cashier
WHEN E. Kassir IS NOT NULL THEN E. Kassir
ELSE
A. LOGIN
END AS LOGIN,
B. summa_prikhodi, C. summa_vozvrat, D. summa_prodazhi, E. summa_raskhoda
FROM
( SELECT LOGIN FROM users WHERE STATUS = 'cashier' ) A
FULL OUTER JOIN
( SELECT kassir, sum( CAST( REPLACE ( summa, ',' , '.' ) AS float) ) AS 'summa_prikhodi' FROM manager_prikhodi WHERE STATUS = 'приход' GROUP BY kassir) B ON A. LOGIN = B. Kassir
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( k_vozvratu_kassir, ',' , '.' ) AS float ) ) AS 'summa_vozvrat' FROM vozvrat GROUP BY kassir ) C ON A. LOGIN = C. Kassir
FULL OUTER JOIN
( SELECT cashier, SUM( CAST( REPLACE ( k_oplate, ',' , '.' ) AS float ) ) AS 'summa_prodazhi' FROM bilet GROUP BY cashier) D ON A. LOGIN = D. cashier
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( summa, ',' , '.' ) AS float ) ) AS 'summa_raskhoda' FROM manager_prikhodi WHERE STATUS = 'расход' GROUP BY kassir) E ON A. LOGIN = E. kassir
выдает мне вот эти данные на рисунке. мне нужно вычислить Total=summa_prodazhi-summa_vozvrat+summa_raskhodi-summa_prikhodi. Может поможете, пожалуйста... Например первый ряд должен быть как: Total=7150,17-2063,31+0-19000=-13913,14
Спасибо заранееПрикреплено изображение (Нажмите для увеличения)
EuGen
Отправлено: 28 Ноября, 2012 - 12:14:27
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007
Откуда: Berlin
Помог: 707 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT
CASE WHEN B. Kassir IS NOT NULL THEN B. Kassir
WHEN C. Kassir IS NOT NULL THEN C. Kassir
WHEN D. cashier IS NOT NULL THEN D. cashier
WHEN E. Kassir IS NOT NULL THEN E. Kassir
ELSE
A. LOGIN
END AS LOGIN,
B. summa_prikhodi, C. summa_vozvrat, D. summa_prodazhi, E. summa_raskhoda, summa_prodazhi- summa_vozvrat+ summa_raskhodi- summa_prikhodi AS total
FROM
( SELECT LOGIN FROM users WHERE STATUS = 'cashier' ) A
FULL OUTER JOIN
( SELECT kassir, sum( CAST( REPLACE ( summa, ',' , '.' ) AS float) ) AS 'summa_prikhodi' FROM manager_prikhodi WHERE STATUS = 'приход' GROUP BY kassir) B ON A. LOGIN = B. Kassir
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( k_vozvratu_kassir, ',' , '.' ) AS float ) ) AS 'summa_vozvrat' FROM vozvrat GROUP BY kassir ) C ON A. LOGIN = C. Kassir
FULL OUTER JOIN
( SELECT cashier, SUM( CAST( REPLACE ( k_oplate, ',' , '.' ) AS float ) ) AS 'summa_prodazhi' FROM bilet GROUP BY cashier) D ON A. LOGIN = D. cashier
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( summa, ',' , '.' ) AS float ) ) AS 'summa_raskhoda' FROM manager_prikhodi WHERE STATUS = 'расход' GROUP BY kassir) E ON A. LOGIN = E. kassir
?
-----Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jfr
Отправлено: 28 Ноября, 2012 - 12:46:07
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010
Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
EuGen пишет: CODE (
SQL ):
скопировать код в буфер обмена
SELECT
CASE WHEN B. Kassir IS NOT NULL THEN B. Kassir
WHEN C. Kassir IS NOT NULL THEN C. Kassir
WHEN D. cashier IS NOT NULL THEN D. cashier
WHEN E. Kassir IS NOT NULL THEN E. Kassir
ELSE
A. LOGIN
END AS LOGIN,
B. summa_prikhodi, C. summa_vozvrat, D. summa_prodazhi, E. summa_raskhoda, summa_prodazhi- summa_vozvrat+ summa_raskhodi- summa_prikhodi AS total
FROM
( SELECT LOGIN FROM users WHERE STATUS = 'cashier' ) A
FULL OUTER JOIN
( SELECT kassir, sum( CAST( REPLACE ( summa, ',' , '.' ) AS float) ) AS 'summa_prikhodi' FROM manager_prikhodi WHERE STATUS = 'приход' GROUP BY kassir) B ON A. LOGIN = B. Kassir
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( k_vozvratu_kassir, ',' , '.' ) AS float ) ) AS 'summa_vozvrat' FROM vozvrat GROUP BY kassir ) C ON A. LOGIN = C. Kassir
FULL OUTER JOIN
( SELECT cashier, SUM( CAST( REPLACE ( k_oplate, ',' , '.' ) AS float ) ) AS 'summa_prodazhi' FROM bilet GROUP BY cashier) D ON A. LOGIN = D. cashier
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( summa, ',' , '.' ) AS float ) ) AS 'summa_raskhoda' FROM manager_prikhodi WHERE STATUS = 'расход' GROUP BY kassir) E ON A. LOGIN = E. kassir
?
EuGen, мне теперь выдает:Прикреплено изображение (Нажмите для увеличения)
EuGen
Отправлено: 28 Ноября, 2012 - 12:49:16
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007
Откуда: Berlin
Помог: 707 раз(а)
NULL выдает по той причине, что в Вашем выражении есть операнды, которые есть NULL.
NULL-значение с точки зрения БД, это неопределенность.
Говоря простым языком, NULL - это "непойми сколько". Если к "непойми сколько", скажем, прибавить 100, в результате опять получится "непойми сколько". Ровно поэтому, если в выражении присутствует NULL (а оно у Вас присутствует), результат будет NULL
-----Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jfr
Отправлено: 28 Ноября, 2012 - 13:32:06
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010
Откуда: Таджикистан, Худжанд
Помог: 0 раз(а)
[+]
EuGen, Нашел решение. Спасибо и тебе также.
CODE (
SQL ):
скопировать код в буфер обмена
SELECT
CASE WHEN B. Kassir IS NOT NULL THEN B. Kassir
WHEN C. Kassir IS NOT NULL THEN C. Kassir
WHEN D. cashier IS NOT NULL THEN D. cashier
WHEN E. Kassir IS NOT NULL THEN E. Kassir
ELSE
A. LOGIN
END AS LOGIN,
B. summa_prikhodi, C. summa_vozvrat, D. summa_prodazhi, E. summa_raskhodi,
( ISNULL( D. summa_prodazhi, 0) - ISNULL( C. summa_vozvrat, 0) + ISNULL( E. summa_raskhodi, 0) - ISNULL( B. summa_prikhodi, 0) ) AS 'Total'
FROM
( SELECT LOGIN FROM users WHERE STATUS = 'cashier' ) A
FULL OUTER JOIN
( SELECT kassir, sum( CAST( REPLACE ( summa, ',' , '.' ) AS float) ) AS 'summa_prikhodi' FROM manager_prikhodi WHERE STATUS = 'приход' GROUP BY kassir) B ON A. LOGIN = B. Kassir
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( k_vozvratu_kassir, ',' , '.' ) AS float ) ) AS 'summa_vozvrat' FROM vozvrat GROUP BY kassir ) C ON A. LOGIN = C. Kassir
FULL OUTER JOIN
( SELECT cashier, SUM( CAST( REPLACE ( k_oplate, ',' , '.' ) AS float ) ) AS 'summa_prodazhi' FROM bilet GROUP BY cashier) D ON A. LOGIN = D. cashier
FULL OUTER JOIN
( SELECT kassir, SUM( CAST( REPLACE ( summa, ',' , '.' ) AS float ) ) AS 'summa_raskhodi' FROM manager_prikhodi WHERE STATUS = 'расход' GROUP BY kassir) E ON A. LOGIN = E. kassir
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB