Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySQL] lista zapytan
itsme
post
Post #1





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




Witam Szanowne Grono,
Przegladajac wiele kursow mySQL-a zauwazylem, ze wiekszosc konczy sie wtedy gdy sie robi ciekawie (niestety). Dlatego zwracam sie do Was z moim pomyslem:
1. nie jest to kurs mySQL-a
2. bedzie to male faq
3. pomijamy pytania typu jak wybrac dane z jednej tabeli - czyli to co jest w kursach podstawowych
4. jezeli ktos chcedodac cos od siebie nie oponuje - zapraszam

dane wyjsciowe:
jest 5 tabel
- <b>klient</b> - [id].[nazwa]
- <b>faktura</b> - [id].[data_wystawienia].[id_klienta]
- <b>faktura_pozycje</b> - [id].[id_faktury].[id_towaru].[ilosc].[kwota_jednostkowa_netto].
.[stawka_vat].[wartosc_vat].[wartosc_netto].[kwota_brutto].[ilosc]
- <b>towar</b> - [id].[nazwa].[jm].[id_gupy_towarowej]
- <b>grupa_towarowa</b> - [id].[nazwa]

z tych tabel uzytkownik chce wyciagnac nastepujace dane:
<b>A</b> sume kwot wartosc_netto sprzedanych towarow z podzialem na kwartaly
<b>B</b> ilosc poszczegolnych stawek podatku VAT z podzialem na miesiace (wynik: 7% - kwieciec 2003 - 13 razy; oczywiscie takie cos nigdy nie jest potrzebne)
<b>C</b> sume kwot podatku VAT z poszczegolnych stawek podatku VAT z podzialem na miesiace (wynik: 7% - kwieciec 2003 - 2045.33 zł)
<b>D</b> ilosc faktur wystawionych na wszystkich klientow z podzialem na klientow i miesiace - pole nadrzedne klient | miesiac | ilosc
<b>E</b> suma wartosc_netto i ilosc z podzialem na sprzedaz danego towaru oraz miesiace
<b>F</b> Ilosc faktur w ktorych pokazal sie dany (wybrany) towar
<b>G</b> Wybranie nazwy_towaru/ilosc sprzedanego w roku 2002 danemu klientowi z danej grupy towarowej (dane znane id klienta, id grupy towarowej)

to sa pytania ktore przyszly mi do glowy. odpowiedz na nie daje duzo mozliwosci innym uzytkownikom. daje mozliwosc sprawdzennia swojej wiedzy i mam nadzieje ze wywola mala merytoryczna dyskusje.

INSTRUKCJA:
- jak udzielamy odpowiedzi - procz zapytania mySQL chcialbym aby pojawilo sie jego wytlumaczenie (SELECT FROM WHERE ORDER BY wykluczam) oto przyklad
Cytat
<b>ODP A</b>
SELECT ..... FROM .... WHERE .... ORDER BY DESC ....
DESC - oznacza sortowanie w ......

mam nadzieje ze to pomoze innym (zreszta mi tez)
po wyczerpaniu tematu mozna dodawac inne przyklady inne uklady tabel
Do posta jest ankieta chce wiedziec co sadzicie o tym pomysle.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Nudzilem sie troche, przypomnial mi sie ten topic, wiec sprobowalem swoich sil...
Zajmowalem sie tylko zadaniami z pierwszego posta w tym topicu.
Oto rozwiazania (mam nadzieje ze dobre (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ):



A - sume kwot wartosc_netto sprzedanych towarow z podzialem na kwartaly
---------
  1. SELECT SUM(p.wartosc_netto) suma, # sumujemy wartosc netto
  2. CASE WHEN MONTH(data_wystawienia) BETWEEN 1 AND 3 THEN "I kwartał"
  3. WHEN MONTH(data_wystawienia) BETWEEN 4 AND 6 THEN "II kwartał"
  4. WHEN MONTH(data_wystawienia) BETWEEN 7 AND 9 THEN "III kwartał"
  5. WHEN MONTH(data_wystawienia) BETWEEN 10 AND 12 THEN "IV kwartał"
  6. END kwartal # dajemy na to alias'a kwartal, aby moc pogrupowac
  7. FROM `php_faktura_pozycje` p
  8. LEFT JOIN `php_faktura` f ON ( p.id_faktury = f.id )
  9. GROUP BY kwartal;
  10. # grupujemy po kwartale, w celu uzyskania kwartalnego zestawienia


B - ilosc poszczegolnych stawek podatku VAT z podzialem na miesiace
---------
  1. SELECT `stawka_vat`, COUNT(p.id) ile, # pobieramy stawke i jej ilosc
  2. CONCAT_WS(" ",MONTHNAME(data_wystawienia),YEAR(data_wystawienia)) DATA
  3. FROM `php_faktura_pozycje` p
  4. LEFT JOIN `php_faktura` f ON ( p.id_faktury = f.id )
  5. GROUP BY MONTH(data_wystawienia), YEAR(data_wystawienia), stawka_vat;
  6. # grupujemy po roku i miesiacu (zeby kazdy miesiac kazdego roku byl liczony osobno)
  7. # i po stawce vat, zeby otrzymac zestawienie


C - sume kwot podatku VAT z poszczegolnych stawek podatku VAT z podzialem na miesiace
---------
  1. SELECT `stawka_vat`, SUM(p.wartosc_vat) suma,
  2. CONCAT_WS(" ",MONTHNAME(data_wystawienia),YEAR(data_wystawienia)) DATA
  3. FROM `php_faktura_pozycje` p
  4. LEFT JOIN `php_faktura` f ON ( p.id_faktury = f.id )
  5. GROUP BY MONTH(data_wystawienia), YEAR(data_wystawienia), stawka_vat;
  6. # to samo co w poprzednim, tylko ze nie zliczamy ilosci tylko sumujemy wartosci


D - ilosc faktur wystawionych na wszystkich klientow z podzialem na klientow i miesiace - pole nadrzedne klient | miesiac | ilosc
---------
  1. SELECT
  2. k.nazwa klient, MONTHNAME( f.data_wystawienia ) miesiac, COUNT( f.id ) ilosc
  3. FROM `php_faktura` f
  4. INNER JOIN `php_klient` k ON ( f.id_klienta = k.id )
  5. GROUP BY klient,miesiac
  6. # grupujemy wg klient, miesiac, zeby kazdy miesiac kazdego klienta byl
  7. # liczony osobno


F - Ilosc faktur w ktorych pokazal sie dany (wybrany) towar
---------
  1. SELECT
  2. COUNT(DISTINCT id_faktury) `ile`
  3. FROM `php_faktura_pozycje` p
  4. WHERE p.`id_towaru` = 5 # dane id_towaru
  5. # musi byc DISTINCT, zeby tylko raz liczyc dany towar jesli sie pojawil wiecej niz raz na jednej fakturze
  6.  
  7.  
  8. SELECT
  9. `t`.`nazwa` `towar`, # pobieramy nazwe towaru
  10. COUNT(DISTINCT id_faktury) `ile` # ilosc unikalnych (DISTINCT) wartosci id_faktury
  11. FROM `php_faktura_pozycje` p
  12. LEFT JOIN `php_towar` t ON (`t`.`id` = `p`.`id_towaru`)
  13. WHERE p.`id_towaru` = 5 # dane id_towaru
  14. GROUP BY `towar`;
  15. # to samo, tylko ze jeszcze z pobieraniem nazwy tego towaru

Sory, ze opisy troche ascetyczne, ale robilem to wczoraj o 4 nad ranem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Zapomnialem nawet o ostatnim punkcie G (bez skojarzen (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )
Go to the top of the page
+Quote Post

Posty w temacie
- It's_me   [mySQL] lista zapytan   10.04.2003, 12:30:32
- - scanner   2xTAK, ale czy mógłbyś zamieścić kod SQL generując...   10.04.2003, 16:21:26
- - It's_me   ok nastapila zmiana z ogloszenie na przyklejony z...   10.04.2003, 19:19:10
- - DeyV   No to zaczynamy. Wyświetlanie grup towarów, oraz ...   12.04.2003, 19:29:27
- - DeyV   A teraz coś innego: Ilość faktur, które pojawiły s...   12.04.2003, 19:58:34
- - divx4u.pl   nie lepiej pole daty zmienic na tym timestap ?   30.04.2003, 10:40:24
- - kris_   Cytat[SQL] pobierz, plaintext SELECT count(`id...   30.04.2003, 16:07:52
- - DeyV   1. Myślę, że nieco lepiej wyglada to tak: [SQL] p...   30.04.2003, 17:30:05
- - uboottd   Troche prosta ta baza... No ale dobra. Mam zadanie...   30.06.2003, 11:49:32
- - FiDO   Nudzilem sie troche, przypomnial mi sie ten topic,...   18.08.2003, 23:05:03
- - peyn   Cytat(DeyV @ 2003-04-12 20:58:34)A gdyby potr...   27.09.2004, 11:41:43
- - oldek   Wszystko to jest piękne i ładne, tyle że w niereal...   19.12.2004, 09:12:57
- - Grizzli   Mozna tez w inn sposob zrobic zapytanie do bazy cz...   21.03.2005, 22:21:20
- - L.Pociask   a jak zrobić takie zapytanie, które wyszuka np wed...   22.11.2005, 19:55:54
- - dudus1   Zwrócony wynik zapytania powinien tworzyć odnośnik...   9.12.2005, 12:12:57
- - MalyKazio   To teraz ja mam pytanie. Jak z takiej bazy, z tabe...   9.01.2008, 12:18:23
- - bartg   [SQL] pobierz, plaintext SELECT id_klienta, id FRO...   25.01.2008, 17:38:27
|- - peyn   Cytat(bartg @ 25.01.2008, 18:38:27 ) ...   27.01.2008, 13:13:57
- - esp   Znalazłem chyba najbardziej odpowiedni wątek Chc...   22.10.2015, 08:35:12


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

 



RSS Aktualny czas: 12.10.2025 - 11:07