Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL]SQL dodawanie i odejmowanie w jednej kolumnie
magier123
post 30.01.2014, 19:03:46
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
tomxx
post 30.01.2014, 19:07:33
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Pokaż strukturę tej tabeli.
Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 19:16:55
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


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)

Ten post edytował magier123 30.01.2014, 19:19:46
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 19:23:15
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




IF

select SUM(IF(RODZAJ<>'K',WARTOSC,-WARTOSC)) as suma .....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 19:30:39
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


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'"
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 19:41:48
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 19:45:32
Post #7





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 19:48:11
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zakladam ze uzywasz PDO... od kiedy po QUERY robi sie EXECUTE?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 19:53:43
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


  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?
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 19:55:27
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




widac nie ma zadnych rekordow spelniajacych twoje warunki:
INVDATE between '2014-01-01' and '2014-01-30' AND CUSTCODE='13232'


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 20:02:01
Post #11





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


Chyba jednak nie o to chodzi. Sprawdzalem na 4 klientach na ktorych sa korekty w tym czasie i na wszystkich jest ten sam wynik
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 20:10:18
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




piszesz ze jest pusta tablica. Czyli co, twoj print_r zwraca na ekranie tekst: Array() czy nic nie zwraca? zadnego tekstu?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 20:20:49
Post #13





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


Array
(
)

Jezeli wszystko byloby ok to nie powinno byc?
Array
(
[SUM] =>
)
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 20:21:50
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu wywal caly blok WHERE.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
magier123
post 30.01.2014, 20:28:29
Post #15





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.03.2007

Ostrzeżenie: (0%)
-----


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
)

)
Go to the top of the page
+Quote Post
nospor
post 30.01.2014, 20:32:00
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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

suma, FROM

Ten przecinek jest totalnie ZBEDNY


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 11:13