Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> duzy views liczacy ilości wg warunku.
sindbad_zeglarz
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 18.04.2012

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


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
Go to the top of the page
+Quote Post
alegorn
post
Post #3





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


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.
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 Aktualny czas: 22.08.2025 - 11:02