Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyswietlenie notek i ilosci komentarzy
Forum PHP.pl > Forum > Bazy danych > MySQL
hmmm
mecze sie juz z tym dosc sporo i nie potrafie sobie poradzic.
otoz mam dwie tabele:
notki (id, kategoria, tytul, tresc, czas) i
komentarze (id, id_notki, nick, email, tresc, czas).

w tabeli notki kolumna kategoria przyjmuje dwie wartosci: 1 lub 2, gdzie 1 oznacza, ze jest to news, a 2 - notka do bloga.

chcialbym zrobic zapytanie, ktore wyswietli mi z
tabeli notki: tytul, nick, email, tresc, czas,
natomiast z tabeli komentarze zliczy mi ilosc komentarzy dla danego wpisu do bloga (czyli z pominieciem kategoria=1).

da sie to zrobic jednym zapytaniem?
jezeli tak, to prosze o pomoc.

bo dwoma zapytaniami dam rade, ale wtedy jedno umieszczam w drugim.
probowalem z left join, ale nie wychodzi ...
Ociu
Mozna by to zrobić za pomocą mysql_num_rows();
  1. <?php
  2. $sql = mysql_query(&#092;"SELECT * FROM tabela ORDER BY `id`\") or die (mysql_error());
  3. while($r = mysql_fetch_array($sql))
  4.  {
  5. # tu sie wyswietla
  6. $query = mysql_query(&#092;"SELECT * FROM costam WHERE id_notki='\".$r['id'].\"'\") or die (mysql_error());
  7. $row = mysql_num_rows($sql);
  8. print 'komentarzy: '.$row;
  9.  }
  10. ?>

lub:
  1. SELECT COUNT(id)
  2. FROM costam WHERE id_notki='".$r['id'].""
hmmm
aha, czyli w ten sam sposob co ja to robilem wczesniej - zapytanie w petli bedacej wynikiem poprzedniego zapytania ...

a nie da sie jakos inaczej? za pomoca jednego?

no ale dzieki
Ociu
Raczej nie.
hmmm
hmmm, to moze ... zliczys ilosc komentarzy dla kazdej kategorii dla kazdego id.
potem w petli while bym sprawdzal, czy kategoria jest rowna 2 i jezeli tak, wowczas wyswietlal ilosc komentarzy.
ale stworzyc jedno zapytanie?
bo przeciez jezeli ma zliczac komentarzy dla kategorii 1, to wynik zliczania powinien byc rowny 0. wiec chyba problem tkwi w samym zapytaniu, no ale nie umiem sobie z nim poradzic .. sadsmiley02.gif
Ociu
No ale jeśli będziesz sprawdzał w pętli wtedy skrypt będzie wolny, bo sprawdzi tyle pozycji, ile masz rekordów w tabeli.

Jeżeli masz problemy z zapytaniami, to pisz na forum, przecież po to istnieje.
Skobi
a w ten sposób:

  1. SELECT
  2. n.tytul, n.tresc, n.czas, count(k.id_notki)
  3. FROM notki n
  4. LEFT OUTER JOIN komentarze k ON n.id=k.id_notki
  5. WHERE n.kategoria=2
  6. GROUP BY n.id
hmmm
heh, zapytanie dziala poprawnie, dzieki, ale ... nie o to mi chodzi tongue.gif
nie wiem, czy to jest mozliwe osiagniecie czegos takiego, ale postaram sie dokladnie wytlumaczyc o co chodzi.

to ma byc system newsow i notek z bloga.
wszystko ma byc razem wyswietlane - kolumny: tytul, czas, tresc.
przy czym dodatkowo, jezeli jest to notka z bloga (kategoria=2) ma pojawiac sie dodatkowa linia wyswietlajaca ilosc komentarzy.

do tej pory robilem do dwoma zapytaniami umieszczajac drugie w petli while pierwszego.

rozwiazanie @skobiego zwraca mi tylko notki z bloga (kategoria=2) ... sadsmiley02.gif
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.