emsy Posted April 24, 2010 Report Share Posted April 24, 2010 (edited) Tātad, man vajag uzrakstīt kkā kveriju, lai no db izvilktu topikus sarindojot viņus dilstošā secībā pēc pēdējo postu id un, lai vēl topiki augošā secībā būtu storēti pēc pinned statusa, kas neaktivēts ir 0 bet aktīvs 1. Es ceru, ka visi saprata. Pagaidām esmu noskaidrojis, ka to var kkādā veidā izdarīt ar JOINiem, bet tiku tiktāl SELECT * FROM forum_topics LEFT JOIN forum_posts ON forum_posts.tid=forum_topics.id WHERE forum_topics.fid=$fid ORDER BY forum_posts.id AND forum_topics.pinned ASC Problēma tā, ka topiki ir sakārtoti dilsstošā secībā un tiek parādīti tikpat cik posti, tbš, ja topikā ir 4 posti, tad topiks tiek parādīts sarakstā 4x pēc kārtas :/ Edited April 24, 2010 by emsy Quote Link to comment Share on other sites More sharing options...
emsy Posted April 25, 2010 Author Report Share Posted April 25, 2010 Atvainojos par dubultpostu, bet tiešām neviens nevar palīdzēt?? :/ Quote Link to comment Share on other sites More sharing options...
reGative Posted April 25, 2010 Report Share Posted April 25, 2010 Rīt gaidi atbildi. Šodien ir svētdiena. Tas tev neko neizsaka? Quote Link to comment Share on other sites More sharing options...
marcis Posted April 25, 2010 Report Share Posted April 25, 2010 Tīri pēc tevis teiktā... Palasi par SELECT pieprasījumu sintaksi, īpašu uzmanību pievēršot ORDER BY klauzai http://dev.mysql.com/doc/refman/5.0/en/select.html SELECT * FROM forum_topics LEFT JOIN forum_posts ON forum_posts.tid=forum_topics.id WHERE forum_topics.fid=$fid ORDER BY forum_posts.id DESC, forum_topics.pinned ASC Varbūt, ka es neko nejēdzu no forumiem, taču man šķiet, ka tev tur loģika pieklibo. Pieņemot, ka pinned topiki atrādās neatkarīgi no atvērtās lappuses (noteikti jau, ka tiks lietots pagination parastajiem topikiem), vienkāršākais risinājums varētu būt šāds: SELECT * FROM `forum_topics` WHERE fid=$fid AND pinned=1 ORDER BY id ASC UNION ALL SELECT * FROM `forum_topics` WHERE fid=$fid AND pinned=0 ORDER BY id DESC LIMIT $offset, $perpage Quote Link to comment Share on other sites More sharing options...
emsy Posted April 25, 2010 Author Report Share Posted April 25, 2010 Es tagad esmu tādā lupatā, ka NP++ negibu vērt vaļā, bet rīt kko saštukošu Quote Link to comment Share on other sites More sharing options...
emsy Posted April 26, 2010 Author Report Share Posted April 26, 2010 2 dubultposti uz 1 topiku, es ceru, ka mani nesāks nodi*st :/ Tīri pēc tevis teiktā... Palasi par SELECT pieprasījumu sintaksi, īpašu uzmanību pievēršot ORDER BY klauzai http://dev.mysql.com/doc/refman/5.0/en/select.html SELECT * FROM forum_topics LEFT JOIN forum_posts ON forum_posts.tid=forum_topics.id WHERE forum_topics.fid=$fid ORDER BY forum_posts.id DESC, forum_topics.pinned ASC Varbūt, ka es neko nejēdzu no forumiem, taču man šķiet, ka tev tur loģika pieklibo. Pieņemot, ka pinned topiki atrādās neatkarīgi no atvērtās lappuses (noteikti jau, ka tiks lietots pagination parastajiem topikiem), vienkāršākais risinājums varētu būt šāds: SELECT * FROM `forum_topics` WHERE fid=$fid AND pinned=1 ORDER BY id ASC UNION ALL SELECT * FROM `forum_topics` WHERE fid=$fid AND pinned=0 ORDER BY id DESC LIMIT $offset, $perpage 2. varianats izskatās daudzsološs, bet izmet SQL erroru, "Nepareizi lietoti UNION un ORDER BY!" :/ Quote Link to comment Share on other sites More sharing options...
waplet Posted April 26, 2010 Report Share Posted April 26, 2010 varbūt vajag GROUP by? Quote Link to comment Share on other sites More sharing options...
briedis Posted April 26, 2010 Report Share Posted April 26, 2010 varbūt vajag GROUP by? GROUP vajadzīgs tad, kad izmanto agregācijas funkcijas (COUNT, SUM, AVG, MAX, MIN utt) Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 26, 2010 Report Share Posted April 26, 2010 Šams ko par x2 postiem teica.....es aizdomājos....KUR IR 2EASY?! :D Quote Link to comment Share on other sites More sharing options...
emsy Posted April 26, 2010 Author Report Share Posted April 26, 2010 (edited) Pēc mārča dotajiem piemēriem sagudroju šitā "SELECT * FROM forum_topics WHERE fid=$fid ORDER BY pinned DESC, id DESC" Tagad tēmas kārto dilstoši pēc ID un pinnedi arī ir augšā, bet kkā vēl joprojām gribas, lai kārtotos pēc pēdējo ierakstu ID :/ Edited April 26, 2010 by emsy Quote Link to comment Share on other sites More sharing options...
marcis Posted April 27, 2010 Report Share Posted April 27, 2010 Pieglabā topiku tabulā pēdējo izmaiņu datumu un pēc tā arī kārto. 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.