Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql]Wyświetlenie listy newsów i jednoczesne zliczenie liczby komentarzy...?, w jednym zapytaniu..
kukix
post 7.09.2006, 21:32:48
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


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..

Ten post edytował kukix 7.09.2006, 21:33:15
Go to the top of the page
+Quote Post
nospor
post 7.09.2006, 21:35:13
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  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;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kukix
post 8.09.2006, 21:14:10
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


ś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ć...?
Go to the top of the page
+Quote Post
nospor
post 8.09.2006, 21:53:07
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
em_pl
post 8.09.2006, 22:19:40
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 10.12.2005
Skąd: Stalowa Wola / Wroclaw

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


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 ?


--------------------
Go to the top of the page
+Quote Post
nospor
post 8.09.2006, 22:24:43
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kukix
post 9.09.2006, 18:51:12
Post #7





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


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

Ten post edytował kukix 9.09.2006, 18:54:23
Go to the top of the page
+Quote Post
slowik
post 9.09.2006, 19:21:00
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.03.2006

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


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
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: 15.08.2025 - 04:16