Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Zapytanie MySQL - problem
Forum PHP.pl > Forum > Przedszkole
krzesik
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,


Kishin
  1. SELECT stawka_vat,sum(wartosc_vat),sum(wartosc_netto),sum(wartosc_brutto)
  2. FROM SPRZEDAZ_SRODEK
  3. GROUP BY stawka_vat
krzesik
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% .................
Kishin
  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.  
krzesik
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
Kishin
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ć
krzesik
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
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.