Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytanie z grop by
behemot
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Tarnów/Kraków

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


Mam dwie taleblki

newsy:
news_id | tresc
1 | tresc_1
2 | tresc 2
3 | tresc 3

itd.
oraz druga tabelke komentarze

kom_id | news_id | komentarz
1 | 1 | komentarz do newsa_1
2 | 1 | komentarz do newsa_1
3 | 3 | komentarz do newsa_3

jak teraz jak powinno wygladac zapytanie aby uzyskac ilosc komentarzy do poszczegolnych newsow

tzn
news_id | ilosc_komentarza
1 | 2
2 | 0
3 | 1

Wiem jak zrobic zaby wyswietlily sie newsy z komentarzami i z iloscia komentarzy, ale jesli news nie ma komentarzy (2 wiersz w pow. tabeli) to sie nie wyswietla. Jakies propozycje?


--------------------
Pozdrawiam,
kuba
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


$ilosc_komentarzy=mysql_fetch_row(mysql_db_query("baza_danych","SELECT count(*) FROM komentarze where id_komentarza = $id_komentarza"));

teraz juz instrukcja warunkowa if w zaleznosci od wyniku i to wszystko

chyba o to Tobie chodzilo smile.gif jesli ne to rosze o sprostowanie

pozdrawiam
Lukasz
Go to the top of the page
+Quote Post
behemot
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Tarnów/Kraków

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


Cytat
[php:1:b9749d216c]<?php
ilosc_komentarzy=mysql_fetch_row(mysql_db_query("baza_danych","SELECT count(*) FROM komentarze where id_komentarza = $id_komentarza"));
?>[/php:1:b9749d216c]

teraz juz instrukcja warunkowa if w zaleznosci od wyniku i to wszystko

Tez o tym myslalem. Tylko jesli w bazie bedzie 100 newsow i do kazdego bede chcial wyswietlic ilosc komentarzy, to bede musial zrobic 100 zapytan i jeszcze 100 sprawdzen, a wolabym to zrobic w jednym zapytaniu. Jesli sie da;
Wykminilem cos takiego
[sql:1:b9749d216c]
select n.news_id,count(k.news_id) AS ilosc_kom from newsy n, komentarze k where k.news_id=n.news_id group by k.news_id;[/sql:1:b9749d216c]
Tylko wtedy nie wyswietla mi tych newsow ktorych liczba komentarzy jest rowan zero. Ale chyba z tym zapytaniem bede musial cos kombinowac.


--------------------
Pozdrawiam,
kuba
Go to the top of the page
+Quote Post
kossa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Sprobuj tak:

pisze to na szybko z glowy:

[php:1:87994e8e91]<?php
$res=mysql_query("SELECT * from komentarze");
while($row = mysql_fetch_array($res))
{
$id_komentarza = $row["id"];
$komentarz=$row["komentarz"];
echo $komentarz;
ilosc_komentarzy=mysql_fetch_row(mysql_db_query ("baza_danych","SELECT count(*) FROM
komentarze where id_komentarza = $id_komentarza"));
echo $ilosc_komentarzy;
}
?>[/php:1:87994e8e91]

mozesz tez zrobic zapytanie w zapytaniu bardziej szczegolowe smile.gif

Lukasz
Go to the top of the page
+Quote Post
FiDO
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


On chce jedno zapytanie. I o ile sie nie myle da sie to zrobic outer join'em. Kiedys cos takiego widzialem, ale nie moge sobie przypomniec gdzie. Tych join'ow nigdy nie stosowalem, wiec ciezko mi Ci pomoc, ale dam Ci chodziaz swiadomosc, ze da sie to zrobic.
Go to the top of the page
+Quote Post
scanner
post
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Proponuję przeanalizować wątek: http://forum.php.pl/viewtopic.php?t=2617


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
uboottd
post
Post #7





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Dla leniwych:
[sql:1:3316649671]
SELECT n.news_id,count(k.news_id) AS ilosc_kom FROM newsy AS n LEFT JOIN komentarze AS k ON k.news_id=n.news_id
GROUP BY k.news_id;
[/sql:1:3316649671]
Go to the top of the page
+Quote Post
behemot
post
Post #8





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Tarnów/Kraków

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


Dzieki bardzo wszytkim za pomoc!
Po drobnych modyfikacjach:
[sql:1:11aab8a87a]
SELECT n.news_id,count(k.news_id) AS ilosc_kom
FROM newsy AS n LEFT OUTER JOIN komentarze AS k ON k.news_id=n.news_id
GROUP BY n.news_id;
[/sql:1:11aab8a87a]
Wszytko dziala okej! smile.gif


--------------------
Pozdrawiam,
kuba
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: 19.08.2025 - 17:06