Wuu Posted September 6, 2011 Report Share Posted September 6, 2011 $result = mysql_query('select DISTINCT t1.tid,t1.title,t1.description,t2.post from '.$INFO['sql_tbl_prefix'].'topics t1 join '.$INFO['sql_tbl_prefix'].'posts t2 on (t1.tid = t2.topic_id) join topic_raiting t3 on (t1.tid = t3.id) where t1.forum_id in ('.$uSet['game_list'].');'); Kā lai sakārto pēc lielākā reitinga, būtībā (sum(t3.raiting)/(t3.kopējais ierakstu skaits ar konkrēto ID)) desc, nu galīgi nevaru iebraukt. Laikam nezinu pareizos keywordus. Tā izskatās dati topic_raiting tabulā, id topika id, raiting - vērtējums, voter - balsotājs. Quote Link to comment Share on other sites More sharing options...
briedis Posted September 6, 2011 Report Share Posted September 6, 2011 Varētu sākt ar normālu kvērija stukturēšanu, mysql atslēgvārdu rakstīšanu ar lielajiem burtiem: Normāla sintakse: SELECT tas.šitas, tas, šitas FROM user_table ut JOIN item_table it ON it.id = ut.item_id WHERE ut.id = 1 ORDER BY ut.id ASC Tas prefikss arī padara to lietu nelasāmu, vismaz īsāku aliasu uztaisi: $pref = $BLABL['yapaypapsoejr']; $q = "SELECT * FROM {$pref}table"; Quote Link to comment Share on other sites More sharing options...
codez Posted September 6, 2011 Report Share Posted September 6, 2011 (edited) Parasti šādus datus (pēc kuriem regulāri kārto) kešo un indeksē. Šijā gadījumā tas būtu tā, ka tev topics tabulā ir lauks rating, kurā arī glabājas reitings. Lait balsojot ātri varētu aprēķināt jaunāko reitingu, vari glabāt arī total_rating (kopējais reitings no visām balsīm) un votes (balsojumu skaits) un pie jauna balsojuma pieskaitīt pie total_rating balsojuma reitingu, pie votes pieskaita 1 un rating aprēķina kā total_rating/votes. Jo pretējā gadījumā, ja tev būs 1000 topiki, kur katrā ir vidēji 1000 balsojumi, kverijs pēc tavas idejas atlasīs 1000 000 ierakstus un vēl tos kārtos. Diez ko efektīvi nav. Edited September 6, 2011 by codez Quote Link to comment Share on other sites More sharing options...
Wuu Posted September 7, 2011 Author Report Share Posted September 7, 2011 codez, es saprotu, bet šajā gadījumā tas nav variants. Joprojām gaidu atbildi kādu order by beigās pievienot. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted September 7, 2011 Report Share Posted September 7, 2011 Joprojām gaidu atbildi kādu order by beigās pievienot. tātu arī pievieno. .. ORDER BY tresha_tabula.lauks_pec_kura_kartot_izvadi kartošanas nosacijums ( ASC vai DESC) siikaak sheit Piedevām tev tur sintakse ir galīgi šķērsām .. Quote Link to comment Share on other sites More sharing options...
Wuu Posted September 7, 2011 Author Report Share Posted September 7, 2011 Neder parast, tur jau tā lieta (sum(t3.raiting)/(t3.kopējais ierakstu skaits ar konkrēto ID)) Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted September 7, 2011 Report Share Posted September 7, 2011 (edited) kaads sakars datu IZVADES kartosanai ar kautkadam matimatiskam darbiibaam .. ORDER BY ir kaartot IZVADAMOS datus.. sakumaa savac pareizus datus, tos sagrupejot ar GROUP BY vai sasummejot SUM vai COUNT() vai izmantojot citas aggregate funkcijas (kas nu tev tur vajadziigs) un tad izvadi sakartotus ar ORDER BY .. Edited September 7, 2011 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
briedis Posted September 7, 2011 Report Share Posted September 7, 2011 (edited) SELECT blabla, (sum(t3.raiting)/(t3.kopējais ierakstu skaits ar konkrēto ID)) AS aliass ....blabla... ORDER BY aliass ASC Edited September 7, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.