Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: запрос на вычисления

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jfr
Отправлено: 28 Ноября, 2012 - 11:51:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


Здравствуйте!
Этот запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2. CASE WHEN B.Kassir IS NOT NULL THEN B.Kassir
  3. WHEN C.Kassir IS NOT NULL THEN C.Kassir
  4. WHEN D.cashier IS NOT NULL THEN D.cashier
  5. WHEN E.Kassir IS NOT NULL THEN E.Kassir
  6. ELSE
  7. A.LOGIN
  8. END AS LOGIN,
  9. B.summa_prikhodi,C.summa_vozvrat,D.summa_prodazhi, E.summa_raskhoda
  10. FROM
  11. (SELECT LOGIN FROM users WHERE STATUS ='cashier' )A
  12. FULL OUTER JOIN
  13. (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
  14. FULL OUTER JOIN
  15. (SELECT kassir, SUM(CAST(REPLACE(k_vozvratu_kassir,',','.') AS float )) AS 'summa_vozvrat' FROM vozvrat  GROUP BY kassir )C ON A.LOGIN = C.Kassir
  16. FULL OUTER JOIN
  17. (SELECT cashier, SUM(CAST(REPLACE(k_oplate,',','.') AS float )) AS 'summa_prodazhi' FROM bilet  GROUP BY cashier)D ON A.LOGIN = D.cashier
  18. FULL OUTER JOIN
  19. (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
Спасибо заранее
Прикреплено изображение (Нажмите для увеличения)
1280626.jpg
 
 Top
EuGen Администратор
Отправлено: 28 Ноября, 2012 - 12:14:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1.     SELECT
  2.     CASE WHEN B.Kassir IS NOT NULL THEN B.Kassir
  3.     WHEN C.Kassir IS NOT NULL THEN C.Kassir
  4.     WHEN D.cashier IS NOT NULL THEN D.cashier
  5.     WHEN E.Kassir IS NOT NULL THEN E.Kassir
  6.     ELSE
  7.     A.LOGIN
  8.     END AS LOGIN,
  9.     B.summa_prikhodi,C.summa_vozvrat,D.summa_prodazhi, E.summa_raskhoda, summa_prodazhi-summa_vozvrat+summa_raskhodi-summa_prikhodi AS total
  10.     FROM
  11.     (SELECT LOGIN FROM users WHERE STATUS ='cashier' )A
  12.     FULL OUTER JOIN
  13.     (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
  14.     FULL OUTER JOIN
  15.     (SELECT kassir, SUM(CAST(REPLACE(k_vozvratu_kassir,',','.') AS float )) AS 'summa_vozvrat' FROM vozvrat  GROUP BY kassir )C ON A.LOGIN = C.Kassir
  16.     FULL OUTER JOIN
  17.     (SELECT cashier, SUM(CAST(REPLACE(k_oplate,',','.') AS float )) AS 'summa_prodazhi' FROM bilet  GROUP BY cashier)D ON A.LOGIN = D.cashier
  18.     FULL OUTER JOIN
  19.     (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

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jfr
Отправлено: 28 Ноября, 2012 - 12:46:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


EuGen пишет:
CODE (SQL):
скопировать код в буфер обмена
  1.     SELECT
  2.     CASE WHEN B.Kassir IS NOT NULL THEN B.Kassir
  3.     WHEN C.Kassir IS NOT NULL THEN C.Kassir
  4.     WHEN D.cashier IS NOT NULL THEN D.cashier
  5.     WHEN E.Kassir IS NOT NULL THEN E.Kassir
  6.     ELSE
  7.     A.LOGIN
  8.     END AS LOGIN,
  9.     B.summa_prikhodi,C.summa_vozvrat,D.summa_prodazhi, E.summa_raskhoda, summa_prodazhi-summa_vozvrat+summa_raskhodi-summa_prikhodi AS total
  10.     FROM
  11.     (SELECT LOGIN FROM users WHERE STATUS ='cashier' )A
  12.     FULL OUTER JOIN
  13.     (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
  14.     FULL OUTER JOIN
  15.     (SELECT kassir, SUM(CAST(REPLACE(k_vozvratu_kassir,',','.') AS float )) AS 'summa_vozvrat' FROM vozvrat  GROUP BY kassir )C ON A.LOGIN = C.Kassir
  16.     FULL OUTER JOIN
  17.     (SELECT cashier, SUM(CAST(REPLACE(k_oplate,',','.') AS float )) AS 'summa_prodazhi' FROM bilet  GROUP BY cashier)D ON A.LOGIN = D.cashier
  18.     FULL OUTER JOIN
  19.     (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, мне теперь выдает:
Прикреплено изображение (Нажмите для увеличения)
11111111.jpg
 
 Top
EuGen Администратор
Отправлено: 28 Ноября, 2012 - 12:49:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




NULL выдает по той причине, что в Вашем выражении есть операнды, которые есть NULL.
NULL-значение с точки зрения БД, это неопределенность.
Говоря простым языком, NULL - это "непойми сколько". Если к "непойми сколько", скажем, прибавить 100, в результате опять получится "непойми сколько". Ровно поэтому, если в выражении присутствует NULL (а оно у Вас присутствует), результат будет NULL


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jfr
Отправлено: 28 Ноября, 2012 - 13:32:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


EuGen, Нашел решение. Спасибо и тебе также.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2. CASE WHEN B.Kassir IS NOT NULL THEN B.Kassir
  3. WHEN C.Kassir IS NOT NULL THEN C.Kassir
  4. WHEN D.cashier IS NOT NULL THEN D.cashier
  5. WHEN E.Kassir IS NOT NULL THEN E.Kassir
  6. ELSE
  7. A.LOGIN
  8. END AS LOGIN,
  9. B.summa_prikhodi,C.summa_vozvrat,D.summa_prodazhi, E.summa_raskhodi,
  10. (ISNULL(D.summa_prodazhi,0)-ISNULL(C.summa_vozvrat,0)+ISNULL(E.summa_raskhodi,0)-ISNULL(B.summa_prikhodi,0)) AS 'Total'
  11. FROM
  12. (SELECT LOGIN FROM users WHERE STATUS ='cashier' )A
  13. FULL OUTER JOIN
  14. (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
  15. FULL OUTER JOIN
  16. (SELECT kassir, SUM(CAST(REPLACE(k_vozvratu_kassir,',','.') AS float )) AS 'summa_vozvrat' FROM vozvrat  GROUP BY kassir )C ON A.LOGIN = C.Kassir
  17. FULL OUTER JOIN
  18. (SELECT cashier, SUM(CAST(REPLACE(k_oplate,',','.') AS float )) AS 'summa_prodazhi' FROM bilet  GROUP BY cashier)D ON A.LOGIN = D.cashier
  19. FULL OUTER JOIN
  20. (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
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB