Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][POMOC]
Forum PHP.pl > Forum > Bazy danych > MySQL
krowkaMU
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 ?
mmmmmmm
zamień:
GROUP BY inwestycja.id_miejscowosc
na :
GROUP BY miejscowosc.miejscowosc
krowkaMU
Wow super 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
robertpiaty
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 smile.gif Natomiast miejscowość będzie zawsze podana - niezależnie od tego czy w danej miejscowości są jakieś inwestycje czy też nie.
krowkaMU
OK teraz blondyn załapał smile.gif
Dziękuje
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.