Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie [Kapitał]
Forum PHP.pl > Forum > Bazy danych > MySQL
yellow7
Jak mozna zmodyfikowac ponizsze zapytania abym nie dostawal sumy wplat dla danego dnia tylko całościową wartość wszystkich dotad otrzymanych wplat na kazdy dzien.

Z gory dzieki za podpowiedzi.

  1. SELECT DATA,SUM( WPLATY)
  2.  
  3. AS sum_wplaty
  4.  
  5. FROM UTARG WHERE DATA BETWEEN '2010-01-05' AND '2010-01-15'
  6.  
  7. GROUP BY DATA




Zapytanie zwraca

DATA sum_wynik
2010-01-05 122.6
2010-01-06 164.2
2010-01-07 23.3
2010-01-08 10.4
2010-01-09 19.65
2010-01-10 43.4
2010-01-11 9.2
2010-01-12 6.2
2010-01-13 125.75
Mchl
Kod
SET @sumaBiezaca = 0;
SELECT
  DATA,
  sum_wplaty,
  @sumaBiezaca := @sumaBiezaca + sum_wplaty AS sumaBiezaca
FROM (
  SELECT
    DATA,
    SUM( WPLATY) AS sum_wplaty
  FROM
    UTARG
  WHERE
    DATA BETWEEN '2010-01-05' AND '2010-01-15'
  GROUP BY DATA;
)
yellow7
Niestety wysypuje mi błąd.

  1.  
  2. SELECT
  3. DATA ,
  4. sum_wplaty,
  5. @sumaBiezaca := @sumaBiezaca + sum_wplaty AS sumaBiezaca
  6.  
  7. FROM (
  8.  
  9. SELECT
  10. DATA [b],
  11. SUM[/b]( WPLATY) AS sum_WPLATY //w tym miejscu podswietla blad
  12. FROM UTARG
  13. WHERE
  14. DATA BETWEEN '2010-01-05'
  15. AND '2010-01-15'
  16. GROUP BY DATA ;
  17.  
  18. MySQL zwrócił komunikat: Dokumentacja
  19. #1064 - Something is wrong in your syntax obok '' w linii 13
  20.  
  21.  
  22.  
Mchl
Raczej chodzi o ten średnik po GROUP BY DATA;
Nie powinno go być.
yellow7
Po usunieciu srednika blad sie troszke zmienil.

#1248 - Every derived table must have its own alias
# MySQL zwrócił pusty wynik (zero rekordów).

  1. SET @sumaBiezaca =0;
  2. SELECT
  3. DATA , sum_wplaty,
  4. @sumaBiezaca := @sumaBiezaca + sum_wplaty AS sumaBiezaca
  5. FROM (
  6.  
  7. SELECT
  8. DATA ,
  9. SUM( WPLATY) AS sum_wplaty
  10.  
  11. FROM UTARG
  12.  
  13. WHERE
  14. DATA BETWEEN '2010-01-05'
  15. AND '2010-01-15'
  16. GROUP BY DATA
  17. )
Mchl
Kod
SET @sumaBiezaca = 0;
SELECT
   DATA,
   sum_wplaty,
   @sumaBiezaca := @sumaBiezaca + sum_wplaty AS sumaBiezaca
FROM (
   SELECT
     DATA,
     SUM( WPLATY) AS sum_wplaty
   FROM
     UTARG
   WHERE
     DATA BETWEEN '2010-01-05' AND '2010-01-15'
   GROUP BY DATA
) AS sq
yellow7
Wielkie dzieki Mchl. Wszystko dziala po dopisaniu "sq"
Mchl
Na przyszłość: każde podzapytanie musi mieć nadany alias (przez operator AS), czy to będzie 'sq', czy 'costam' nie ma już znaczenia.
lukasz.adamczewski
Cytat(Mchl @ 23.02.2010, 22:09:22 ) *
Na przyszłość: każde podzapytanie musi mieć nadany alias (przez operator AS), czy to będzie 'sq', czy 'costam' nie ma już znaczenia.


albo rób alias po spacji za podzapytaniem, nazwą kolumny jak Ci wygodniej, a przede wszystkim krócej bo po to są aliasy przede wszystkim
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.