Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Trudności z zapytanie
deha21
post
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Potrzebuje zarobić zapytanie, który wyciągnie mi z bazy TITLE oraz VIEWS z tabeli NEWS, ale posortowane wg ilości komentarzy. Mam do tego dwie tabele: NEWS i KOMENTARZE.
z NEWS potrzebuję wyciągnąć TITLE i VIEWS
z KOMENTARZE pogrupować komentarze wg pola NEWS_ID
Chce żeby mi wyświetliło 500 newsów, w których było najwięcej komentarzy oraz ilość wyświetleń tych newsów.

Próbowałem z czymś takim ale za cholerę nie wiem jak to zrobić - nie jestem dobry w skomplikowanych zapytaniach.
  1. $result=mysql_query("SELECT id, news FROM komentarze GROUP BY news ORDER BY SUM(news) LIMIT 500");
  2. while ($row=mysql_fetch_array($result)) {
  3. $ask=mysql_query("SELECT title, views FROM news WHERE id='".$row['news']."'");
  4. $askrow=mysql_fetch_assoc($ask);
  5. echo $askrow['title'],' - ',$askrow['views'],'<br>';
  6. }


--------------------
Go to the top of the page
+Quote Post
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


Cytat(deha21 @ 18.04.2012, 17:33:48 ) *
Potrzebuje zarobić zapytanie, który wyciągnie mi z bazy TITLE oraz VIEWS z tabeli NEWS, ale posortowane wg ilości komentarzy. Mam do tego dwie tabele: NEWS i KOMENTARZE.
z NEWS potrzebuję wyciągnąć TITLE i VIEWS
z KOMENTARZE pogrupować komentarze wg pola NEWS_ID
Chce żeby mi wyświetliło 500 newsów, w których było najwięcej komentarzy oraz ilość wyświetleń tych newsów.

Próbowałem z czymś takim ale za cholerę nie wiem jak to zrobić - nie jestem dobry w skomplikowanych zapytaniach.
  1. $result=mysql_query("SELECT id, news FROM komentarze GROUP BY news ORDER BY SUM(news) LIMIT 500");
  2. while ($row=mysql_fetch_array($result)) {
  3. $ask=mysql_query("SELECT title, views FROM news WHERE id='".$row['news']."'");
  4. $askrow=mysql_fetch_assoc($ask);
  5. echo $askrow['title'],' - ',$askrow['views'],'<br>';
  6. }


  1. SELECT count(id), news FROM komentarze GROUP BY news ORDER BY 2 DESC LIMIT 500
o ile dobrze zrozumiałem


  1. SELECT k.title,count(k.id) AS views
  2. FROM news n
  3. JOIN komentarze k ON k.news_id=n.id
  4. GROUP BY k.title
  5. ORDER BY 2 DESC
  6. LIMIT 500

czy to??

Ten post edytował bpskiba 18.04.2012, 17:38:33
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Ale gdzie w bazie danych zapisana jest ilość wyświetleń?
  1. SELECT `n`.`title`,`n`.`views`, COUNT(`k`.`id`) AS `liczba_komentarzy` FROM `news` `n` LEFT JOIN `komentarze` `k` ON `n`.`id` = `k`.`news_id` GROUP BY `n`.`id` ORDER BY `liczba_komentarzy` DESC


Ten post edytował mortus 18.04.2012, 20:09:23
Go to the top of the page
+Quote Post
deha21
post
Post #4





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Działa mi pierwszy zapytanie od bpskiba, ale z tego co widzę to chyba źle coś zlicza. Reszta w ogóle nic nie wyświetla.
mortus, ilość wyświetleń jest w tabeli NEWS w polu VIEWS


--------------------
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


No tak popełniłem literówkę wcześniej (już poprawiłem) i zamiast COUNT napisałem COUTN. Skrypt:
  1. $sql = "SELECT `n`.`title`,`n`.`views`, COUNT(`k`.`id`) AS `liczba_komentarzy` FROM `news` `n` LEFT JOIN `komentarze` `k` ON `n`.`id` = `k`.`news_id` GROUP BY `n`.`id` ORDER BY `liczba_komentarzy` DESC LIMIT 500";
  2. $results = mysql_query($sql);
  3. while($row = mysql_fetch_assoc($results)) {
  4. echo $row['title'] . ' - ' . $row['views'] . '<br/>';
  5. }


Ten post edytował mortus 18.04.2012, 20:09:10
Go to the top of the page
+Quote Post
deha21
post
Post #6





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Dzięki. Literówkę zauważyłem ale nie działało. Ale teraz działa wink.gif


--------------------
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 - 14:39