Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]jak napisać zapytanie
Forum PHP.pl > Forum > Przedszkole
robos85
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ź.
boddah85
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.
webasek
@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
krzyszbi
  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
robos85
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
webasek
bo brakuje na końcu
  1. GROUP BY n.kat_id


szkoda, że nie skorzystałeś z mojego zapytania jest oprawne i sprawdzone
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.