Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciągnie danych na podstawie dwóch różnych tabel
proton
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 4
Dołączył: 16.08.2006

Ostrzeżenie: (20%)
X----


Witam

Mam mały problem z wyciąganiem danych na podstawie dwóch innych tabel dokładnie chodzi mi o to że musze z tabeli 'uzytkownicy' wyciagnac userow na podstawie ilosci dodanych komentarzy i ocen gdzie komentarze i oceny są w osobnych tabelach. Zarówno w tabeli komentarzy i ocen jest jedno pole które określa kto napisał ten komentarz czy kto dodał ta ocenę. Udaje mi się wyciągać te dane ale tylko na podstawie jednej tabeli (może pokaże przykład):

  1. SELECT user_name, user_id, count(user_id) AS ilosc_komentarzy FROM komentarze INNER JOIN uzytkownicy ON komentarz_user=user_id GROUP BY user_name ORDER BY ilosc_komentarzy DESC LIMIT 0, 5


Teraz jak to przerobić aby wyciągnąć jeszcze ilość ocen i posortować wg. ilosc_komentarzy+ilosc_ocen
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
proton
post
Post #2





Grupa: Zarejestrowani
Postów: 88
Pomógł: 4
Dołączył: 16.08.2006

Ostrzeżenie: (20%)
X----


Struktura komentarzy:

  1. --
  2. -- Struktura tabeli dla `comments`
  3. --
  4.  
  5. CREATE TABLE `comments` (
  6. `comment_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  7. `comment_item_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  8. `comment_type` char(2) NOT NULL DEFAULT '',
  9. `comment_name` varchar(50) NOT NULL DEFAULT '',
  10. `comment_message` text NOT NULL,
  11. `comment_datestamp` int(10) UNSIGNED NOT NULL DEFAULT '0',
  12. `comment_ip` varchar(20) NOT NULL DEFAULT '0.0.0.0',
  13. PRIMARY KEY (`comment_id`),
  14. KEY `comment_datestamp` (`comment_datestamp`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=973 ;


Gdzie comment_name określa kto napisał komentarz. Oraz struktura ocen:

  1. --
  2. -- Struktura tabeli dla `ratings`
  3. --
  4.  
  5. CREATE TABLE `ratings` (
  6. `rating_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  7. `rating_item_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  8. `rating_type` char(1) NOT NULL DEFAULT '',
  9. `rating_user` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  10. `rating_vote` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  11. `rating_datestamp` int(10) UNSIGNED NOT NULL DEFAULT '0',
  12. `rating_ip` varchar(20) NOT NULL DEFAULT '0.0.0.0',
  13. PRIMARY KEY (`rating_id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1594 ;


Tutaj rating_user określa kto coś ocenił.

No i moje zapytanie wygląda tak:

  1. SELECT u.user_name username, u.user_id idusera, COUNT( k.comment_name ) komentarzy, COUNT( o.rating_user ) ocen
  2. FROM users u
  3. LEFT JOIN comments k ON k.comment_name = u.user_id
  4. LEFT JOIN ratings o ON o.rating_user = u.user_id
  5. GROUP BY username
  6. ORDER BY komentarzy DESC , ocen DESC LIMIT 5
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 04:01