ray Posted December 19, 2007 Report Share Posted December 19, 2007 (edited) Ir tabula "komentāri" (id, komentars, user), kurā glabājas visu lietotāju komentāri. Būtu jāizveido TOP`50 no lietotājiem (user), kas visvairāk komentējuši. Edited December 19, 2007 by ray Link to comment Share on other sites More sharing options...
andrisp Posted December 19, 2007 Report Share Posted December 19, 2007 (edited) Un ? Kur jautājums ? Varbūt kveriju ? SELECT author, COUNT(*) as comment_count FROM comments GROUP BY author ORDER BY comment_count DESC LIMIT 50 Edited December 19, 2007 by andrisp Link to comment Share on other sites More sharing options...
betons Posted December 19, 2007 Report Share Posted December 19, 2007 (edited) Es tomēr ieteiktu USERS tabulā uztaisīt lauku comment_count un tad pie katra komentāra pievienošanas pieskaiti tam USERim comment_count un tad TOP komentus vienkārši ar SELECT username,comment_count FROM users ORDER BY comment_count DESC LIMIT 0, 50; Edited December 19, 2007 by betons Link to comment Share on other sites More sharing options...
ray Posted December 19, 2007 Author Report Share Posted December 19, 2007 (edited) tad pieņemsim, ka tabulu pārveido šādi [id, komentars, user, views], klāt nāk lauks ar skaitu, cik reizes konkrētais komentārs ir apskatīts. kā izveidot šādu query? Vēlamais rezultāts būtu šāds: autors, komentāru skaits, skatījumi [kopējais apskatījumu skaits komentāriem]. p.s. paldies, iepriekšējais query strādā nevainojami Edited December 19, 2007 by ray Link to comment Share on other sites More sharing options...
andrisp Posted December 19, 2007 Report Share Posted December 19, 2007 Tie skaitījumi ir cik autors ir pats skatījies vai arī cik autora topiki ir skatīti ? Ja otrais: SELECT SUM(c.views) FROM c.comments LEFT JOIN authors a ON ( a.id = c.author_id ) WHERE a.id = 123 Es gan nezinu vai strādā :), uz ātru roku rakstu. Link to comment Share on other sites More sharing options...
betons Posted December 19, 2007 Report Share Posted December 19, 2007 (edited) Dari tāpat kā ieteicu iepriekš izveido lietotājam lauku total_comment_views un, katru reizi, kad apskata konkrēta lietotāja komentāru palielina USER tabulā to total_comment_views un tad tev nevajadzēs nekādus sarežģītus kverijus, jo tas total_comment_views jau būs katram lietotājam. ================= Par top 50 kverijiem! Man ir jautājum kādam kurš zin, par andrisp kveriju: SELECT author, COUNT(*) as comment_count FROM comments GROUP BY author ORDER BY comment_count DESC LIMIT 50 Ja būs 50 autori savadījuši pa 1000 komenti katrs, kāds būs šī kverija laiks, ja visas kollonas būs salikti pareizi indeksi. REspektīvi vai mysql indeksu koks glabā kautkādas daudzumu starpvērtības vai arī šī kverija ilgums būs 50 000 darbības ? Edited December 19, 2007 by betons Link to comment Share on other sites More sharing options...
ray Posted December 19, 2007 Author Report Share Posted December 19, 2007 (edited) par to pirmo query vēl, kā izslēgt to, lai vienādos komentārus skaitītu kā vienu? Dari tāpat kā ieteicu iepriekš tā arī izdarīju, tagad vajag līdzīgu lietu, bet nu vnk to cenšos atrisināt ar šiem tabulas laukiem, lai nav jāskaidro situācija pa jaunu Edited December 19, 2007 by ray Link to comment Share on other sites More sharing options...
andrisp Posted December 19, 2007 Report Share Posted December 19, 2007 ray, paskaties DISTINCT mysql manuālī. Link to comment Share on other sites More sharing options...
ray Posted December 19, 2007 Author Report Share Posted December 19, 2007 par DISTINC iespējām es zinu, ka viņš saskaita unikālos ierakstus, bet īsti nemāku query pārveidot :/ Link to comment Share on other sites More sharing options...
xPtv45z Posted December 19, 2007 Report Share Posted December 19, 2007 Ja no manuāļa nesaproti, kur likt, tad veic pārmeklēšanu. Ieliec kādā vietā, pie kļūdas vai nepareiza rezultāta pārvieto uz citu vietu vaicājumā, kur vēl neesi licis. :P Link to comment Share on other sites More sharing options...
Recommended Posts