magier123
30.01.2014, 19:03:46
Witam
Dawno mnie tu nie bylo i od razu wracam z problemem.

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
30.01.2014, 19:07:33
Pokaż strukturę tej tabeli.
magier123
30.01.2014, 19:16:55
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
30.01.2014, 19:23:15
IF
select SUM(IF(RODZAJ<>'K',WARTOSC,-WARTOSC)) as suma .....
magier123
30.01.2014, 19:30:39
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
30.01.2014, 19:41:48
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
30.01.2014, 19:45:32
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\intranet.php on line 22
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'");
22. $result->execute();
nospor
30.01.2014, 19:48:11
Zakladam ze uzywasz PDO... od kiedy po QUERY robi sie EXECUTE?
magier123
30.01.2014, 19:53:43
$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'");
$result->execute();
$items = $result->fetchAll();
Fakt... chyba za duzo juz dzisiaj... ale teraz wynik to pusta tablica... znowu jakis prosty blad?
nospor
30.01.2014, 19:55:27
widac nie ma zadnych rekordow spelniajacych twoje warunki:
INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'
magier123
30.01.2014, 20:02:01
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
30.01.2014, 20:10:18
piszesz ze jest pusta tablica. Czyli co, twoj print_r zwraca na ekranie tekst: Array() czy nic nie zwraca? zadnego tekstu?
magier123
30.01.2014, 20:20:49
Array
(
)
Jezeli wszystko byloby ok to nie powinno byc?
Array
(
[SUM] =>
)
nospor
30.01.2014, 20:21:50
Poprostu wywal caly blok WHERE.
magier123
30.01.2014, 20:28:29
Ten sam efekt.
Jezeli zrobie tak
$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
30.01.2014, 20:32:00
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.