Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] group by
Bojakki
post 1.11.2006, 12:58:03
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


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.

Ten post edytował Bojakki 1.11.2006, 16:02:51


--------------------
Go to the top of the page
+Quote Post
venomz
post 1.11.2006, 14:45:09
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 18.09.2006

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


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 )

Ten post edytował venomz 1.11.2006, 14:45:37
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 Wersja Lo-Fi Aktualny czas: 30.06.2025 - 06:07