Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: duzy views liczacy ilości wg warunku.
Forum PHP.pl > Forum > Bazy danych > MySQL
sindbad_zeglarz
Hejka .
Chciałbym zrobić coś takiego.
1) Wyświetlić ilości działek wg warunków.
Napisałem sobie jednego selecta poniżej, bedzie to podstawą pod resztę viewsa, ale czy trzeba
pisać tyle selectów ile będzie warunków ? czy można to jakość obejść

  1. SELECT count(d.nr_dzialki)ilosc_działek_gmina_1
  2. FROM dzialka d, gmina g, grunty gr
  3. WHERE
  4. d.gmina_id=g.id
  5. AND
  6. gr.dzialka_id=d.id
  7. AND
  8. g.gmina ='gmina1'
  9. AND
  10. gr.klasa='klasa1'


Wszystko co będzie się zmieniać to gmina i klasa. Jak je złączyć ze sobą questionmark.gif Joinem czy union ? wszystko wyświetlać ma się w kolunnach.

ilosc_Dzialek_gmina_1 | ilosc_dzialek_gmina_2
109 | 199


Ktoś coś podpowie ?
zrobiłem unie z dwóch róznych selectów, ale wyniki liczenia wyświetla w wierszach, a chciałbym żeby wyświetlało w kolumnach.
bpskiba
można np tak:
  1. SELECT * FROM(
  2. SELECT count(d.nr_dzialki)ilosc_działek_gmina_1,1
  3. FROM dzialka d, gmina g, grunty gr
  4. WHERE
  5. d.gmina_id=g.id
  6. AND
  7. gr.dzialka_id=d.id
  8. AND
  9. g.gmina ='gmina1'
  10. AND
  11. gr.klasa='klasa1'
  12. UNION
  13. SELECT 0,count(d.nr_dzialki)ilosc_działek_gmina_2
  14. FROM dzialka d, gmina g, grunty gr
  15. WHERE
  16. d.gmina_id=g.id
  17. AND
  18. gr.dzialka_id=d.id
  19. AND
  20. g.gmina ='gmina2'
  21. AND
  22. gr.klasa='klasa2'
  23. ) AS ww


ale to jest niezbyt mądre smile.gif choćby z powodu takiego, że wyszukanie 1 klasy z gminy 2 wymaga dołożenia kolejnego podzapytania

Wydaje mi się, że źle podchodzisz do tematu. Rozsądne wydaje się aby tablica z wynikiem miała postać:

| gmina | klasa | ilosc_działek |
| gmina1 | 1 | 23 |
| gmina1 | 2 | 33 |
| gmina2 | 1 | 43 |
| gmina2 | 2 | 22 |

Skonstruowanie takiego zapytania nie jest już trudne
alegorn
do widoku robisz ogólne zapytanie.
czyli cos a'la:
  1. SELECT count(d.nr_dzialki)ilosc_działek_gmina_1
  2. FROM dzialka d, gmina g, grunty gr
  3. WHERE
  4. d.gmina_id=g.id
  5. AND
  6. gr.dzialka_id=d.id


ograniczenia dajesz przy pobieraniu z widoku:
  1. SELECT * FROM widok WHERE gmina ='gmina2' AND klasa='klasa2'


j.
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.