Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sumowanie wartości pobranych z tabeli mysql
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam taki kod, który ma za zadanie określić kategorię i sumę wydatków za konktretną kategorię i ogólną sumę wydatków:
Zrobiłem to w następujący sposób
  1. $year=$_POST['rok'];
  2. $month=$_POST['miesiac'];
  3. $sql="select distinct kategoria, sum(kwota) as suma from obroty where date_format(data,'%Y%m')='$year$month' and kierunek='z' group by 1";
  4. $result=mysqli_query($mysqli,$sql) or die ("Błąd zapytania");
  5. echo "<table class=\"wyniki\" id=\"rez\">
  6. <tr><td>nazwa wydatku</td><td>miesiąc ($month.$year)</td></tr>";
  7. while ($rekord=mysqli_fetch_array($result, MYSQLI_ASSOC)){
  8. $kategoria = $rekord['kategoria'];
  9. $suma = $rekord['suma'];
  10. "<tr><td>$kategoria</td><td>$suma</td></tr>";
  11. }
  12. $sql2="select sum(kwota) as suma2 from obroty where date_format(data,'%Y%m')='$year$month' and kierunek='z'";
  13. $result2=mysqli_query($mysqli,$sql2) or die ("Błąd zapytania");
  14. while ($rekord2=mysqli_fetch_array($result2, MYSQLI_ASSOC)){
  15. $pelna_suma= $rekord2['suma2'];
  16. "<tr><td>Suma</td><td>$pelna_suma</td></tr>";
  17. }

I wszystko OK. Działa jak powinno. Jednak chciałbym się dowiedzieć czy da użyć funkcji array_sum, tak żeby nie trzeba było zadawać 2 osobnych pytań. Chodzi mi o to czy w zmianną $suma możnaby potraktować jako array. Mam jakieś zaćmienie, bo nie bardzo wiem jak to zrobić. Może ktoś mi dać jakąś podpowiedź?
nospor
1) Co robi pierwsze zapytanie a co robi drugie zapytanie
2) group by 1 - co to robi?

ps: jeśli drugie zapytanie ma zwracać sumę wszystkiego z pierwszego zapytania, to dodawać w php nie umiesz?
W pierwszej petli robisz:
$pelna_suma += $suma;
I juz.
mortus
Cytat(nospor @ 10.01.2012, 14:33:23 ) *
2) group by 1 - co to robi?

Zdaje się, że grupuje po pierwszej pobranej pozycji/kolumnie (czyli w tym przypadku po kolumnie kategoria), jak głosi manual.
nospor
Czyli w takim razie odpowiedzią jest moj PS z poprzedniego posta
mortus
Cytat(nospor @ 10.01.2012, 14:54:24 ) *
Czyli w takim razie odpowiedzią jest moj PS z poprzedniego posta

No tak chyba będzie najszybciej i najrozsądniej (czyt. bez konieczności wykonywania drugiego zapytania).
jacusek
przepraszam coś i mi wczoraj wypadło i nie miałem dostępu do netu.
Więc dokładnie chodzi mi o taką tabelę
kategoria kwota
kat1 50
kat2 100
kat3 3.5
SUMA 153.5

I generalnie kod który mam spełnia swoje zadanie. Chodzi mi o możliwość ewentualnego użycie funkcji array_sum na postawie danych $suma, a nie wyciąganie sumy z dodatkowego pytania. Stąd moje pytanie.
nospor
Przecież odpowiedź padła w moim pierwszym poście w tym temacie. Przeczytałeś to w ogóle?
Cytat
ps: jeśli drugie zapytanie ma zwracać sumę wszystkiego z pierwszego zapytania, to dodawać w php nie umiesz?
W pierwszej petli robisz:
$pelna_suma += $suma;
I juz.
jacusek
Jakieś zaćmienie z rana dzięki - o to właśnie chodziło.
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.