Avatar billede chaser64 Nybegynder
16. februar 2003 - 20:57 Der er 10 kommentarer og
1 løsning

Sortering i forum

Hej,
Jeg har brugt hele weekenden på at programmere et forum, og nu virker alt undtagen én ting. Jeg vil gerne have den til at liste de forskellige tråde alt efter hvilken der er svaret sidst i. Den første besked i hver tråd har besked_type = 1, svarene har besked_type = 0. Alle svarene har besked_traad sat til ID nummeret på den post der er svaret på. Ved godt det er lidt rodet, men er der nogen der har et bud?
Avatar billede dk_akj Nybegynder
16. februar 2003 - 21:01 #1
select * from forum order by besked_traad desc

//akj
Avatar billede aspbuilder Nybegynder
16. februar 2003 - 21:15 #2
SELECT * FROM forum WHERE besked_type = 1 ORDER BY besked_traad DESC
Avatar billede chaser64 Nybegynder
16. februar 2003 - 21:30 #3
Hmm, tror I har misforstået mig. besked_traad viser hvilket indlæg svaret hører til. Det der skal sorteres efter er besked_id, der skal den liste den tråd der sidst har været aktivitet i. Forummet kan ses på www.zantiago.com/new_forum . Den side listningen drejer sig om er vis_forum.asp, se f.eks. http://www.zantiago.com/new_forum/vis_forum.asp?Id=6
Der står "Rådner DVD?" fordi den er blevet postet efter "Den nye starwars". Det sidste indlæg er dog et svar til "Den nye starwars", derfor skal den stå øverst. Kan i følge mig?
Avatar billede eagleeye Praktikant
16. februar 2003 - 21:55 #4
Det kan det bliver noget svært at udregne hvis du ikke har ID på den tråd  en besked er i eks:

Tråd:
ID = 1  besked_type = 1

Svar til ID=1
ID = 2  besked_type = 0  besked_traad = 1

Svar til ID=2
ID = 3  besked_type = 0  besked_traad = 2

Er det sådan du mener?
Avatar billede chaser64 Nybegynder
16. februar 2003 - 21:59 #5
Nej, svar til ID 2, altså ID = 3 vil også hedde besked_traad = 1 da det er et svar til den tråd der blev startet af ID = 1
Avatar billede eagleeye Praktikant
16. februar 2003 - 22:08 #6
Hvad så hvis der ikke er svaret i en tråd skal de tråde også listes?
Og har du en kolonne med tid`?
Avatar billede chaser64 Nybegynder
16. februar 2003 - 22:11 #7
Ja, alle tråde skal listes. Der er en kolonne der hedder besked_dato , det er i now formattet.
Avatar billede eagleeye Praktikant
16. februar 2003 - 22:28 #8
Denne vil virke hvis følgene er opfyldt:
besked_traad = ID for beskeder hvor besked_type=1 for eller vil den ikke finde noget tråd for tråde uden svar.


SQL = "SELECT besked_traad, MAX(besked_dato) as dato FROM forum GROUP BY forum.besked_traad ORDER BY MAX(besked_dato) DESC;"
Avatar billede chaser64 Nybegynder
17. februar 2003 - 13:15 #9
Den er jeg ikke helt med på, jeg vil gerne have valgt alle felterne fra databasen så jeg kan bruge dem. Hvordan gøres det så?
Avatar billede eagleeye Praktikant
17. februar 2003 - 19:03 #10
Ja så skal det ud i noget med dette:

SELECT navn FROM forum WHERE ID IN (SELECT besked_traad FROM forum WHERE besked_dato IN(SELECT Max(forum.besked_dato) AS dato FROM forum GROUP BY forum.besked_traad ORDER BY Max(forum.besked_dato) DESC) ORDER BY besked_dato DESC);

Men problemmet er bare at den ikke sortere efter dato efter den sidste post i en tråd.
Avatar billede dr-data Nybegynder
18. februar 2003 - 11:40 #11
hvilken sql sætning bruger du selv nu ?
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
Kurser inden for grundlæggende programmering

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