Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Zapytanie MySQL - problem
krzesik
post 29.02.2016, 22:38:21
Post #1





Grupa: Zarejestrowani
Postów: 513
Pomógł: 1
Dołączył: 25.08.2012

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


Mam bazę w której zapisuję dokumenty sprzedaży
złożona jest z dwóch tabel:

SPRZEDAŻ
(gdzie są m in pola)
- id_dok_spr
- nazwa_kontrahenta
- data_sprzedazy
- nr_dokumentu
- wartosc_netto
- wartosc_vat
- wartosc_brutto
.......

SPRZEDAZ_SRODEK
- id_dok_spr_srodek
- id_dok_spr
- data_sprzedazy
- nazwa_towaru
- cena_towaru
- stawka_vat
- wartosc_netto
- wartosc_vat
- wartosc_brutto
............


Mam problem aby wyświetlić w rekordzie sumy
- netto
- brutto
- vat
dla każdej ze stawek vat,


Go to the top of the page
+Quote Post
Kishin
post 1.03.2016, 08:48:41
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


  1. SELECT stawka_vat,sum(wartosc_vat),sum(wartosc_netto),sum(wartosc_brutto)
  2. FROM SPRZEDAZ_SRODEK
  3. GROUP BY stawka_vat
Go to the top of the page
+Quote Post
krzesik
post 1.03.2016, 11:39:45
Post #3





Grupa: Zarejestrowani
Postów: 513
Pomógł: 1
Dołączył: 25.08.2012

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


Dziękuję,
taka prezentacja wyników też mi wychodzi, ale nurtuje mnie to czy mogę wyświetlić dane w taki sposób
id_dok_spr | nazwa_kontrahenta | data_sprzedazy | sum(wartosc_brutto) | sum(wartosc_netto) | wartoscvat23% | wartoscvat8% .................
Go to the top of the page
+Quote Post
Kishin
post 1.03.2016, 12:26:37
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


  1.  
  2. SELECT c.id_dok_spr ,c.nazwa_kontrahenta,c.data_sprzedazy ,
  3. (CASE WHEN t.stawka_vat= '23%' THEN t.wartosc_vat ELSE 0 END) AS wartoscvat23,
  4. (CASE WHEN t.stawka_vat= '8%' THEN t.wartosc_vat ELSE 0 END) AS wartoscvat8,
  5. sum(t.wartosc_netto)wartosc_netto,sum(t.wartosc_brutto)wartosc_brutto
  6. FROM SPRZEDAZ_SRODEK t
  7. JOIN SPRZEDAZ c ON c.id_dok_spr=t.id_dok_spr
  8. GROUP BY
  9. c.id_dok_spr ,c.nazwa_kontrahenta,c.data_sprzedazy
  10.  
  11.  


Ten post edytował Kishin 1.03.2016, 12:28:25
Go to the top of the page
+Quote Post
krzesik
post 1.03.2016, 13:55:17
Post #5





Grupa: Zarejestrowani
Postów: 513
Pomógł: 1
Dołączył: 25.08.2012

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


Już coś zaczyna wychodzić, jednak jest jeszcze jeden problem, mam sytuację gdy w jednej fakturze mam kilka pozycji, są one oczywiście zapisane w kolejnych rekordach w tabeli sprzedaz_srodek, teraz w takim przypadku pokazuje mi dane odbiorcy oraz wypełnioną dla niego kolumnę np 23% a reszta jest zerowa.
Gdzie leży problem w grupowaniu? i jeszcze jedno, suma w poszczególnych rekordach nie jest sumą w obrębie stawki vat

zapytanie jest na realnych nazwach tabel i kolumn

SELECT c.id_dok_spr ,c.kontrahent_nazwa,c.data_sprzedazy ,
(CASE WHEN t.prc_vat= '23' THEN t.wartoscvat ELSE 0 END) AS wartoscvat23,
(CASE WHEN t.prc_vat= '8' THEN t.wartoscvat ELSE 0 END) AS wartoscvat8,
(CASE WHEN t.prc_vat= '5' THEN t.wartoscvat ELSE 0 END) AS wartoscvat5,
(CASE WHEN t.prc_vat= '3' THEN t.wartoscvat ELSE 0 END) AS wartoscvat3,
(CASE WHEN t.prc_vat= '0' THEN t.wartoscvat ELSE 0 END) AS wartoscvat0,
sum(t.wartoscN) as wartoscnetto,sum(t.wartoscbrutto) as wartoscbrutto
FROM sprzedaz_srodek t
JOIN sprzedaz c ON c.id_dok_spr=t.id_dok_spr
GROUP BY
c.id_dok_spr ,c.kontrahent_nazwa,c.data_sprzedazy

Ten post edytował krzesik 1.03.2016, 13:57:25
Go to the top of the page
+Quote Post
Kishin
post 1.03.2016, 14:43:03
Post #6





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


no to musisz dodać kolejną wartość do grupowania który jest unikalny dla tych pozycji, nazwa towaru wydaje sie logiczna .

Do wartoscvat nie dalismy sumowania smile.gif

  1.  
  2. SELECT c.id_dok_spr ,t.nazwa_towaru,c.kontrahent_nazwa,c.data_sprzedazy ,
  3. (CASE WHEN t.prc_vat= '23' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat23,
  4. (CASE WHEN t.prc_vat= '8' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat8,
  5. (CASE WHEN t.prc_vat= '5' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat5,
  6. (CASE WHEN t.prc_vat= '3' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat3,
  7. (CASE WHEN t.prc_vat= '0' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat0,
  8. sum(t.wartoscN) AS wartoscnetto,sum(t.wartoscbrutto) AS wartoscbrutto
  9. FROM sprzedaz_srodek t
  10. JOIN sprzedaz c ON c.id_dok_spr=t.id_dok_spr
  11. GROUP BY
  12. c.id_dok_spr ,t.nazwa_towaru,,c.kontrahent_nazwa,c.data_sprzedazy
  13.  



Powinno śmigać
Go to the top of the page
+Quote Post
krzesik
post 1.03.2016, 15:21:44
Post #7





Grupa: Zarejestrowani
Postów: 513
Pomógł: 1
Dołączył: 25.08.2012

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


nie, chyba źle napisałem, albo mnie nie zrozumiałeś. mam rekordy

id_dok_spr | nazwa_towaru | wartoscN | wartoscbrutto | prc_vat | wartoscvat

1 | towar 1 | 10,0 | 10,50 | 5 | 0,50
1 | towar 2 | 10,0 | 12,30 | 23 | 2,30
1 | towar 3 | 10,0 | 10,00 | 0 | 0,00
1 | towar 4 | 10,0 | 10,80 | 8 | 0,80
1 | towar 5 | 10,0 | 10,80 | 8 | 0,80

chciałbym wynik, jeśli to możliwe:

id_dok_spr | wartoscN | wartoscbrutto | prc_vat23 | prc_vat8 | prc_vat5 | prc_vat0 + nazwa_kontrahenta ......
1 | 50,00 | 54,40 | 2,30 | 1,60 | 0,50 | 0,00
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: 21.06.2025 - 13:57