Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] group by
Forum PHP.pl > Forum > Przedszkole
Bojakki
napisalem takie zapytanie


$query1 = mysql_query("SELECT region.name, COUNT(image.id) FROM image, region WHERE image.region = region.idr GROUP BY region.name") or die(mysql_error());


Zapytanie dziala dobrze z tym,ze nie do konca tak jakbym chial,tzn. Powedzmy ze tabele wygladaja tak:

region
region name
[1] [mazury]
[2] [gory]
[3] [morze]
[4] [slask]
[5] [kujawy]

image
id idr
[1] [2]
[2] [2]
[3] [1]
[4] [5]
[5] [5]

I wtedy gdy dla jakiegos regionu nie ma zadnego zdjecia to zamiast rezultat wygladac tak:
region
[mazury] [1]
[gory] [2]
[morze] [0]
[slask] [0]
[kujawy] [2]

To wyglada tak:
[mazury] [1]
[gory] [2]
[kujawy] [2]

Czyli jak nie znajdzie dla danego regionu zdjecia w drugiej tabeli to pomija ten region calkwoicie zamiast go wypisac i obok dac 0.
venomz
sprobuj cos w tym stylu:
  1. SELECT region.name, COUNT(image.id) FROM city LEFT JOIN region ON image.region = region.idr GROUP BY region.name


przy zwyklym zlaczeniu wiersze, ktore nie maja odpowiedniej wartosci w drugiej tabeli nie sa dolaczane do wyniku. jesli zastosujesz left join do kazdego wiersza ktorego nie da sie zlaczyc zostanie dopisany NULL (nie wiem jak to inaczej wytlumaczyc dry.gif mam nadzieje ze wiesz o co chodzi smile.gif )
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.