SQL dotaz na najviac komentovane prispevky

Programovacie jazyky, rady, poradňa...
forfun
Light Expert
Light Expert
Príspevky: 77
Registrovaný: 03 jan 2010, 17:26

SQL dotaz na najviac komentovane prispevky

Príspevok od používateľa forfun »

Dobry den

Neviem si poradit s jednym sql dopytom na databazu s ktorym by som chcel vytiahnut najdiskutovanejsie prispevky.
Mam 2 tabulky, jedna kde sa nachadzaju vsetky novinky s vlastnym IDckom a druhu tabulku kde si vsetky komentare (kazdy komentar ma pri sebe udaj novinka_id ktory udava ku ktorej novinke komentar patri.)

To co chcem dostiahnut je vytiahnut z tabulky s komentarmi tych 5 'novinka_id' ktore maju v tabulke najvacsi vyskyt (cize ID noviniek pri ktorych je najviac komentarov) a nasledne vypisat nazvy tychto noviniek z druhej tabulky.

Moj dopyt vyzera nasledovne:

Kód: Vybrať všetko

$most_commented = mysql_query("SELECT news_id, COUNT(news_id) AS comments_count FROM comments GROUP BY news_id ORDER BY comments_count DESC LIMIT 5");
$i = 0;
while($data = mysql_fetch_array($most_commented))
	{
	$id[$i] = $data['news_id'];
	$i++;
	}
$where = "WHERE id = '".$id[0]."' OR id = '".$id[1]."' OR id = '".$id[2]."' OR id = '".$id[3]."' OR id = '".$id[4]."'";

$panel_query = mysql_query("SELECT * FROM news ".$where."");
Prvy dopyt vybere tych 5 najvyskytovanejsich IDciek a posledny dopyt vybere take novinky kde sa nachadza to alebo to alebo to id...
Funguje to aj takto ale ten posledny dopyt mi to uz nezoradi podla toho vyskytu v tabulke s komentarmi. Cize v podstate by som potreboval len ten dopyt na novinky zoradit podla vyskytu toho IDcka v druhej tabulke (komentare)

Urcite sa to da aj jednoduchsie spravit a verim ze sa najde niekto sikovnejsi nez ja. Dakujem
ropman
Medium Professional
Medium Professional
Príspevky: 1250
Registrovaný: 12 apr 2010, 21:07

Re: SQL dotaz na najviac komentovane prispevky

Príspevok od používateľa ropman »

Kód: Vybrať všetko

SELECT *, COUNT(news_id) AS comments_count FROM comments JOIN news ON novinka_id = news.id  GROUP BY news_id ORDER BY comments_count DESC LIMIT 5
takto ziskas zaroven aj data noviniek ... ale vo vecsej db to moze byt pomale. preto lepsie je si dat do noviniek stlpec s poctom komentarov a ten potom upravovat pri pridani/mazani komentarov. bud manualne alebo sa na to pravdepodobne da napisat trigger.
forfun
Light Expert
Light Expert
Príspevky: 77
Registrovaný: 03 jan 2010, 17:26

Re: SQL dotaz na najviac komentovane prispevky

Príspevok od používateľa forfun »

Presne takto som si to predstavoval.

Diky moc za radu
Napísať odpoveď