Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sumowanie Zapytań mysql
Forum PHP.pl > Forum > PHP
rafitopotrafi
Witajcie, mam problem mam oto taką tabelę tabela
i chciałbym uzyskać efekt iż sumują mi sie kwoty dla których operacja to zarobek oraz sumują mi się kwoty dla których operacja to wydatek oraz od sumy zarobków odejmuje sie suma wydatków tak aby wyświetlany był jakby bieżący stan konta, próbowałem już chyba na wszystkie sposoby i już nie mam pomysłu. Nie oczekuje rozwiązania ale chociaż wskazówke jak to zrobić.
Samo wyświetlanie sumy zarobków i wydatków do zrobienia oczywiście proste
Kod
<?php
    
    $server = "localhost";
    $base = "skomp";
    $user = "root";
    $pass = "";
    
    $polaczenie = mysql_connect($server,$user,$pass);
    mysql_select_db($base,$polaczenie);
    $login = $_SESSION['login'];
    $kwerenda = "select sum(kwota) from op where Operacja='Zarobek' and login='$login'";
    $zapytanie = mysql_query($kwerenda,$polaczenie);
    
    if(mysql_num_rows($zapytanie) != 0){
        
        echo '<table><tr><th>sum</th></tr>';
        while($row = mysql_fetch_array($zapytanie)){
            echo "<tr><td>{$row['sum(kwota)']}</td></tr>";
        }
    echo '</table>';
    }
    mysql_close($polaczenie);
?>

kod przedstawia efekt sumowania Zarobków, analogicznie można by zrobić sumowanie wydatków ale jak połączyć te dwa zapytania ?
trueblue
Przenieś warunek z WHERE dotyczący operacji do funkcji SUM używając IF.
W ten sposób możesz sumować tylko wartości jeśli operacja ma określoną wartość.
Możesz utworzyć dwie takie funkcje i obliczyć odrębne wartości w zależności od operacji.
Różnicę policzysz łatwo, ale możesz też to zrobić już w PHP wyświetlając dane.
gino
Możesz też użyć CASE WHEN, wykona się trochę szybciej, czyli:
Kod
SELECT
   sum(case when operacja = 'zarobek' then kwota else 0 end) as zarobek, itd
trueblue
  1. SUM(IF Operacja='zarobek',kwota,0)

albo
  1. SUM(Operacja='zarobek'*kwota)

jest wolniejsze od SUM z użyciem CASE?
gino
Myślę, że nie, miałem na myśli zapytanie z zagnieżdżonymi selectami
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-2024 Invision Power Services, Inc.