Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]jak napisać zapytanie
robos85
post
Post #1





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


mam taką sytuację:
W bazie mam 2 tabele: newsy i kategorie newsów

wpisy w news mają pole id,kat_id,tresc

Czy można 1 zapytaniem pobrać listę kategorii i jednocześnie do każdej z nich podać sumę newsów?
Póki co mam zrobione tak, że w pętli dla każdej kategorii daję COUNT wpisów po id ale to daje sporo zapytać.

Z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
boddah85
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 4
Dołączył: 31.07.2006

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


Jak dla mnie najszybszym możliwym sposobem uzyskania ilości newsów danej kategorii jest dodanie do tabeli kategorie kolumny odpowiedzialnej za zliczanie newsów. Przy dodaniu/usuwaniu newsów będziesz musiał zadbać o odpowiedni update i po wszystkim.
Go to the top of the page
+Quote Post
webasek
post
Post #3





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


@bohddah85 nie efektywne zmusza do stworzeni dwóch dodatkowych funkcji.

@robos85 Da się oto zapytanie:
  1. SELECT kategoria.kat_nazwa, COUNT(news.kat_id) FROM kategoria LEFT JOIN newsy ON kategoria.kat_id = news.kat_id GROUP BY news.kat_id


--------------------
"Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota,
choć nie jestem pewien co do tej pierwszej." Albert Einstein

Wirtualny Rynek Predykcyjny
Go to the top of the page
+Quote Post
krzyszbi
post
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 13
Dołączył: 15.09.2005

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


  1. SELECT k.name,k.id_kat,COUNT(n.id_news) AS ilosc
  2. FROM kategory k
  3. LEFT JOIN news n ON n.id_news=k.kat_id

jakoś mniej więcej tak
ogólnie dołączasz tabelę newsów z warunkiem n.id_news=k.kat_id i liczysz ile ich ma właśnie takie warunek

LEFT JOIN daje to że jak kategoria nie ma jeszcze żadnego news-a to będzie tam 0


--------------------
Everything should be made as simple as possible, but not simpler. - A.Eainstein
Go to the top of the page
+Quote Post
robos85
post
Post #5





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


Cytat(krzyszbi @ 20.10.2008, 20:44:18 ) *
  1. SELECT k.name,k.id_kat,COUNT(n.id_news) AS ilosc
  2. FROM kategory k
  3. LEFT JOIN news n ON n.id_news=k.kat_id

jakoś mniej więcej tak
ogólnie dołączasz tabelę newsów z warunkiem n.id_news=k.kat_id i liczysz ile ich ma właśnie takie warunek

LEFT JOIN daje to że jak kategoria nie ma jeszcze żadnego news-a to będzie tam 0


To mi tylko daje ilość dla pierwszej kategorii, reszty nie zlicza pomimo iż są tam wpisy

ilosc pokazuje sumę wszystkich newsów - ale zamiast listy kategorii mam tylko nazwę pierwszej

Ten post edytował robos85 20.10.2008, 21:12:56
Go to the top of the page
+Quote Post
webasek
post
Post #6





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


bo brakuje na końcu
  1. GROUP BY n.kat_id


szkoda, że nie skorzystałeś z mojego zapytania jest oprawne i sprawdzone


--------------------
"Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota,
choć nie jestem pewien co do tej pierwszej." Albert Einstein

Wirtualny Rynek Predykcyjny
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: 20.08.2025 - 16:51