Avatar billede zidane5 Nybegynder
02. december 2012 - 15:05 Der er 5 kommentarer og
1 løsning

Hjælp med order by funktionen

Hej. Jeg benytter et panel på min side, som viser de senest oprettede tråde for forummet. Jeg vil gerne have, at den skal gå ud fra de seneste oprettede tråde, og ikke de senest oprettede posts i tråden. Nogle der kan hjælpe med dette?

Lige nu er den: ORDER BY tt.thread_lastpost DESC LIMIT ".($min + $max) altså ud fra last post, men jeg vil have det skal være order by thread kun. Nogle der kender løsningen her?

kaldet til db ser således ud:


$result = dbquery(
"SELECT
tf.forum_name,tf.forum_id,

tt.thread_id,tt.thread_locked,tt.thread_subject,tt.thread_author,tt.thread_views,
tt.thread_lastpost,tt.thread_lastuser, tt.thread_postcount, tt.thread_lastpostid as last_id,
if(tt.thread_lastpost>$lastvisited,1,0) as new_post,
tu.user_id, tu.user_name as user_name,
tau.user_name as author,

tp.post_message, tp.post_smileys

FROM ".DB_THREADS." tt
INNER JOIN ".DB_FORUMS." tf USING(forum_id)
INNER JOIN ".DB_POSTS." tp USING(thread_id)
INNER JOIN ".DB_USERS." tu ON tt.thread_lastuser=tu.user_id
INNER JOIN ".DB_USERS." tau ON tt.thread_author=tau.user_id
WHERE ".groupaccess('forum_access')." AND tf.forum_id IN (2,3,4,5,6,7,8)
AND tt.thread_lastpostid = tp.post_id
ORDER BY tt.thread_lastpost DESC LIMIT ".($min + $max)
);
02. december 2012 - 20:53 #1
Du vil ordne efter seneste oprettede tråde, ikke som nu efter seneste oprettede posts.  Hvordan ved du hvilke tråde er de seneste oprettede tråde?  Er de seneste oprettede tråde de med de højeste thread_id?  I så fald må det vel være ORDER BY tt.thread_id DESC.  Eller sidder der i tabelen DB_THREADS en oprettelsesdato for trådene?  Såsom thread_date?  I så fald prøv med ORDER BY tt.thread_date DESC.
Avatar billede zidane5 Nybegynder
02. december 2012 - 23:27 #2
Hej. mange tak for det :) ORDER BY tt.thread_id DESC var det korrekte. Men jeg har en lignende kode, som jeg ikke rigtig kan få til at gøre det samme.

Jeg har forsøgt, at inkludere thread_id, men det har ikke fungeret. Kan det også lade sig gøre ved denne?


$result = dbquery(
"SELECT t.*, tu1.user_name AS usejava script: void(0);r_author, tu1.user_status AS status_author, tu2.user_name AS user_lastuser, tu2.user_status AS status_lastuser

FROM ".DB_THREADS." t
LEFT JOIN ".DB_USERS." tu1 ON t.thread_author = tu1.user_id
LEFT JOIN ".DB_USERS." tu2 ON t.thread_lastuser = tu2.user_id
WHERE t.forum_id='".$_GET['forum_id']."' AND thread_hidden='0'
ORDER BY thread_lastpost DESC LIMIT ".$_GET['rowstart'].",$threads_per_page");
03. december 2012 - 06:52 #3
Du fortæller, at du 'ikke rigtigt kan få det til at gøre det samme.' Den beskrivelse af problemet giver ikke så meget at gå efter. 

Jeg kan ikke rigtigt gennemskue det med usejava script void(0).  Jeg foreslår, at du for den følgende test skipper dette og skipper LIMIT ".$_GET['rowstart'].",$threads_per_page og så erstatter ORDER BY thread_lastpost DESC med ORDER BY t.thread_id DESC.  Så bliver forespørgslen denne:

$result = dbquery(
"SELECT t.*, tu1.user_name AS user_author, tu1.user_status AS status_author, tu2.user_name AS user_lastuser, tu2.user_status AS status_lastuser
FROM ".DB_THREADS." t
LEFT JOIN ".DB_USERS." tu1 ON t.thread_author = tu1.user_id
LEFT JOIN ".DB_USERS." tu2 ON t.thread_lastuser = tu2.user_id
WHERE t.forum_id='".$_GET['forum_id']."' AND thread_hidden='0'
ORDER BY t.thread_id");

Med denne tilrettede forespørgsel, hvad får du så at se?  Forhåbenligt resultatet af søgningen ordnet efter trådenes alder (eller thread_id).  Får du noget andet?  Var det noget andet du ville have?
Avatar billede zidane5 Nybegynder
03. december 2012 - 21:44 #4
Hej. Jeg har forsøgt med din kode, men det gør det omvendte. Forstået på den måde, at de ældeste forum tråde kommer øverst og de nyeste oprettede forum tråde ligger nederst. Det skal være omvendt, så de nyeste forum tråde ligger øverst..

Håber du forstår, hvad jeg mener.
03. december 2012 - 23:06 #5
Nu kommunikerer vi - du forklarer hvad du forventer og hvad der sker i stedet.  Så kan vi gøre noget ved det.  Du siger, at "ORDER BY t.thread_id" sorterer trådene i rækkefølge med det ældste først.  Du vil have de nyeste først.  Det får du så med "ORDER BY t.thread_id DESC.
Avatar billede zidane5 Nybegynder
04. december 2012 - 15:32 #6
Mange tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester