Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Wyświetlenie listy newsów i jednoczesne zliczenie liczby komentarzy...?
Forum PHP.pl > Forum > Przedszkole
kukix
Witam.
Mam taki wielki problem.

Potrzebuje wyświetlić liste newsów i jednoczesnie zliczyć liczbę komentarzy..

moge zrobić pętle i w każdej pętrli zapyutanie o policzenie komentarzy do danego newsa...
Nie chce, tak robić, bo wyrzuci mi mase zapytań...

Jak zrobić to w jednym zapytaniu?

Myslałem, żeby jakoś tak...

SELECT *, COUNT(*) AS liczba_koment FROM tabela_newsy, tabela_komentarze WHERE tabela_newsy.id_news=tabela_komentarze.id_news


WZÓR BAZY:
tabela_newsy:
id_news
tresc


tabela_komentarze:
id_komentarz
id_news
tresc

Prosze o podpowiedź.. coś nie moge tego przeskoczyć... a nie chce robić pętle z tyloma zapytaniami..
nospor
  1. SELECT *, COUNT(K.id_komentarz) AS liczba_koment FROM tabela_newsy N LEFT JOIN tabela_komentarze K ON K.id_news=N.id_news GROUP BY N.id_news;
kukix
śmiga elegancko .. dzięki...

ale tak sie zastanawiam, czy nie lepiej zapisywać tą liczbe komentarzy w bazie newsów, bezpośrednio w każdym newsie..questionmark.gif
np dodając komentarz zwiększało by sie pole liczba komentarzy w wierszu newsa...

jakie rozwiązanie lepiej wybrać...?
nospor
Oczywiscie ze tak jest lepiej jak mowisz smile.gif
Chyba ze to beda male ilosci rekordow, to nie trzeba sie az tak przejmowac. Aczkolwiek przy duzej ilosci i duzym ruchy na stronie, zaoszczedziloby to pare chwil winksmiley.jpg
em_pl
nospor: orientujesz się może nad różnicą w wydajności jednego zapytania sql (tego złożonego, podanego przez ciebie) a liczeniem komentarzy każdego posta osobnym zapytaniem ?
nospor
dokladnie sie nie orientuje jak duza to bedzie roznica, ale zasada jest prosta:
z reguly im mniej zapytan, tym lepiej smile.gif
A generowac dla kazdego posta pokolei zapytanie by sprawdzic ile ma komentow, to oto jedno zapytanie za duzo. a jesli to bedzie w petli to juz o wieeeeele za duzo winksmiley.jpg
kukix
a jeszcze lepiej jest poprostu trzymac liczbe komentarzy prze każdym newsie?

jak jestesmy przy zapytaniach złożonych, to pomóżcie mi jeszcze zsrobić coś takiego:

Mam komentarz napisanyc przez użytkownika o id 1... jak ułożyć to zapytanie żeby wyświetlając newsy wybierało od razu nazwe urzytkownika o tym id z innej tabeli...?

zrobiłem coś takiego, ale nie wiem, czy nie lepiej będzie coś pokombinowac z "join", tylko, że niebardzo cośmi to wychodzi...

" SELECT tabela_news.*,tabela_uzytk.uzytk_imie FROM tabela_news, tabela_uzytk WHERE tabela_uzytk.uzytk_id=tabela_news.uzytk_id "



przykłądowe tabele:

tabela_news:
id_news
tresc_news
urzytk_id

tabela_uzytk
urzytk_id
uzytk_imie
slowik
Tak naprawde to odpowiedz masz juz podaną wyżej przez nospora, to jest normalne złączenie 2 tabel analogiczne do tego z newsami i komentarzami

  1. SELECT tabela_news.*,tabela_uzytk.imie
  2. FROM tabela_news JOIN tabela_uzytk ON tabela_uzytk.urzytk_id = tabela_news.id_news
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.