Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]SQL dodawanie i odejmowanie w jednej kolumnie
Forum PHP.pl > Forum > Przedszkole
magier123
Witam
Dawno mnie tu nie bylo i od razu wracam z problemem. smile.gif

Mam baze w ktorej są faktury vat i potrzebuje wyliczyć wartość tych faktur za zadany okres. O ile okres, klient, i sumowanie to nie problem to korekty juz nie wiem jak zrobic.
W tabeli, wiersz ma faktury ma wartosc i oznaczenie K jesli jest to korekta. Wartosc faktur jest zawsze na plus ( jezeli jest korekta to tylko jest oznaczone jako K ale nie ma ujemnej wartosc). Chciałbym to "załatwić" w jednym zapytaniu.

Teraz napisze glupote ale moze troche pokaze jak to widze

SELECT SUM(SUMA) - (SUM(SUMA) WHERE PAYDEAL = 'K') as SUMA2 ..........

Mam nadzieje ze logiczne
tomxx
Pokaż strukturę tej tabeli.
magier123
Hmmm , teraz bedzie mały problem bo moge sie do niej tylko z jednego IP dostac (z pracy). Chyba troche zle napisalem... wszystko jest w obrebie jednej tabeli.

W tabeli są takie kolumny (ktore będą potrzebne do zapytania)

NUMER KLIENTA, WARTOSC FAKTURY, RODZAJ (korekta lub nie)



NUMER KLIENTA | WARTOŚĆ | RODZAJ
----------------------------------------------
1211.................|.1..............|.... K
----------------------------------------------
1211.................|.2..............|.....P7
----------------------------------------------
1211.................|.2..............|....P14

Według tego wartość na kliencie powinna byc 3. (Dwie FV na plus i jedna korekta)
nospor
IF

select SUM(IF(RODZAJ<>'K',WARTOSC,-WARTOSC)) as suma .....
magier123
Jakis byk? Bo nie dziala


"SELECT SUM(IF(PAYDEAL<>'K',SUM1,-SUM1)) as suma FROM IVVc WHERE INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'"
nospor
Mi dziala.... i co, mamy sie tak licytowac?

Napisz czym sie objawia niedzialanie,czy sa zle wyniki, czy ich nie ma wcale.
Jak nie ma wcale znaczy ze blad bazy, Wiec wyswietl blad bazy
magier123
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\intranet.php on line 22

  1. 21. $result = $dbh->query("SELECT SUM(IF(PAYDEAL<>'K', SUM1, -SUM1)) as suma FROM IVVc WHERE INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'");
  2. 22. $result->execute();
nospor
Zakladam ze uzywasz PDO... od kiedy po QUERY robi sie EXECUTE?
magier123
  1. $result = $dbh->prepare("SELECT SUM(IF(PAYDEAL<>'K', SUM1, -SUM1)) as suma, FROM IVVc WHERE INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'");
  2.  
  3. $result->execute();
  4. $items = $result->fetchAll();
  5.  
  6.  
  7.  
  8. echo "<pre>";
  9. print_r($items);
  10. echo "</pre>";


Fakt... chyba za duzo juz dzisiaj... ale teraz wynik to pusta tablica... znowu jakis prosty blad?
nospor
widac nie ma zadnych rekordow spelniajacych twoje warunki:
INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'
magier123
Chyba jednak nie o to chodzi. Sprawdzalem na 4 klientach na ktorych sa korekty w tym czasie i na wszystkich jest ten sam wynik
nospor
piszesz ze jest pusta tablica. Czyli co, twoj print_r zwraca na ekranie tekst: Array() czy nic nie zwraca? zadnego tekstu?
magier123
Array
(
)

Jezeli wszystko byloby ok to nie powinno byc?
Array
(
[SUM] =>
)
nospor
Poprostu wywal caly blok WHERE.
magier123
Ten sam efekt.
Jezeli zrobie tak

  1. $result = $dbh->query("SELECT SUM(SUM1) as suma FROM IVVc WHERE INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232' AND PAYDEAL='K'");


To tablica jest taka

Array
(
[0] => Array
(
[suma] => 392.61
[0] => 392.61
)

)
nospor
No to masz blad zapytania. Wyswietl go sobie, Pisalem ci juz o tym wczesniej.

suma, FROM

Ten przecinek jest totalnie ZBEDNY
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.