Jump to content
php.lv forumi

Foruma tēmu kārtošana


emsy

Recommended Posts

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 by emsy
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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!" :/

Link to comment
Share on other sites

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 by emsy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...