Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][POMOC], zapytanie COUNT + JOIN LEFT
krowkaMU
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.05.2015

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


Mam dwie tabele: inwestycja i miejscowosc

Tabela inwestycja:
id,id_miejscowosc

Tabela miejscowosc:
id,miejscowosc

I teraz chcialem pobrac wszystkie rekordy z bazy miejscowosc i do nich zliczyć ilość wystąpień w tablicy inwestycja.

Przy zapytaniu:
  1. SELECT miejscowosc.miejscowosc, inwestycja.id
  2. FROM miejscowosc
  3. LEFT JOIN inwestycja ON miejscowosc.id = inwestycja.id_miejscowosc
  4. ORDER BY miejscowosc.miejscowosc
  5. COLLATE utf8_polish_ci


otrzymuje wynik:
miejscowosc, id
Dobrzykowice NULL
Domosław NULL
Iwiny NULL
Karwiany 8
Mędłów NULL
Mirków NULL
Nadolice Wielkie NULL
Ramiszów NULL
Siechnice NULL
Ślęza NULL
Wrocław 1
Wrocław 2
Wrocław 3
Wrocław 4
Wrocław 5
Wrocław 6
Wrocław 7
Wysoka NULL

A teraz chciałem zrobić to samo ale właśnie zliczyć tylko ilość wystąpień dla poszczególnej miejscowości:
Zapytanie:
  1. SELECT miejscowosc.miejscowosc, COUNT( inwestycja.id_miejscowosc ) AS ilosc_inwestycji_w_miejscowosc
  2. FROM miejscowosc
  3. LEFT JOIN inwestycja ON miejscowosc.id = inwestycja.id_miejscowosc
  4. GROUP BY inwestycja.id_miejscowosc
  5. ORDER BY miejscowosc.miejscowosc
  6. COLLATE utf8_polish_ci


Otrzymuje wynik:
miejscowosc, ilosc_inwestycji_w_miejscowosc
Dobrzykowice 0
Karwiany 1
Wrocław 7

Tu moje pytanie co zrobić aby dostać pełna tabele miejscowosc i jezeli dla tej pozycji nie ma nic w tabeli inwestycja wyniku NULL ?
Gdzie popełniam błąd ?
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


zamień:
GROUP BY inwestycja.id_miejscowosc
na :
GROUP BY miejscowosc.miejscowosc
Go to the top of the page
+Quote Post
krowkaMU
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.05.2015

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


Wow super (IMG:style_emoticons/default/smile.gif) zadzialalo.

miejscowosc, ilosc_inwestycji_w_miejscowosc
Dobrzykowice 0
Domosław 0
Iwiny 0
Karwiany 1
Mędłów 0
Mirków 0
Nadolice Wielkie 0
Ramiszów 0
Siechnice 0
Ślęza 0
Wrocław 7
Wysoka 0

A jesli moge prosic o krotki komentarz dlaczego wlasnie tak? bo sam z siebie nigdy bym na to nie wpadl zeby dac grupowanie po miejscowosc.miejscowosc
Jeszcze raz dzieki
Go to the top of the page
+Quote Post
robertpiaty
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Zwróć uwagę na wynik joina - przy wielu miejscowościach masz ilość null (brak relacyjnego rekordu) czyli wszystkie kolumny z tabeli inwestycje przy danym rekordzie mają wartość null. Więc jeśli grupujesz po dowolnej kolumnie z tabeli inwestycje to tam gdzie są null-e to są przecież dla bazy danych te same wartości (IMG:style_emoticons/default/smile.gif) Natomiast miejscowość będzie zawsze podana - niezależnie od tego czy w danej miejscowości są jakieś inwestycje czy też nie.
Go to the top of the page
+Quote Post
krowkaMU
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.05.2015

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


OK teraz blondyn załapał (IMG:style_emoticons/default/smile.gif)
Dziękuje

Ten post edytował krowkaMU 19.05.2015, 13:24:17
Go to the top of the page
+Quote Post

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: 23.08.2025 - 17:58