Avatar billede alex15 Nybegynder
17. februar 2008 - 22:38 Der er 2 kommentarer og
1 løsning

Problemer med GROUP BY

Hej allesammen

Sidder og er igang med et forum system. Og har fået det hele til at fungere som det skal. - Pånær oversigten over de sidste oprettede indlæg eller sidste kommenterede indlæg.

Mit mål:

mit mål at er det skal komme til at se således ud:

22.02.2008 23:24 - //Emnet på nyheden - (//antal kommentarer)
21.02.2008 16:24 - //Emnet på nyheden - (//antal kommentarer)
21.02.2008 13:24 - //Emnet på nyheden - (//antal kommentarer)

//Den skal altså kunne gå ind og hente den sidste oprettede/kommenterede indlæg. og så skal den være sat til ORDER BY `dato` DESC.

Men nok om det.

Mit problem er at jeg har skrevet denne forespørgelse:

$query = mysql_query('SELECT `id`, `forumid`, `dato`, `emne` FROM `forum` GROUP BY `forumid` ORDER BY `dato` DESC');

    while($row = mysql_fetch_assoc($query))
    {...};

//Hele mit forum er bygget op omkring én table. hvor både oprettelsen af indlægget samt kommentarene til det enkelte indlæg ligger. - Den måde hvorpå jeg kan se om hvilke kommentarer der høre til den enkelte tråd gøres ved at jeg kalder tråden f.eks. forumid = 1. og så hedder alle kommentarene også forumid = 1. - hvis i forstår?

Ved at bruge denne GROUP BY - var det meningen at den skulle sørge for at der kun var ÉN række hvor forumid = 1. Og den række browseren skal vælge er den række som har den eneste oprettede dato. Hvilket skulle koden: "ORDER BY `dato` DESC" skulle sørge for.

Hvis jeg sletter delen: GROUP BY `forumid` - ser resultatet således ud.

17/02/2008 18:51 - Tråd nummer 2 (4) // Dette er `forumid1`
17/02/2008 18:45 - Tråd nummer 2 (4) // Dette er `forumid1`
17/02/2008 17:25 - Tråd nummer 1 (2) // Dette er `forumid2`
17/02/2008 17:21 - Tråd nummer 1 (2) // Dette er `forumid2`
17/02/2008 17:15 - Tråd nummer 2 (4) // Dette er `forumid1`
17/02/2008 15:51 - Tråd nummer 2 (4) // Dette er `forumid1`

- Her er fejlen at den viser ALLE de forskellige rækker der findes. og selv om de er fra samme `forumid`.

Hvor i mod indsætter jeg denne GROUP BY er resultatet følgende:

17/02/2008 18:45 - Tråd nummer 2 (4) // Dette er `forumid1`
17/02/2008 17:25 - Tråd nummer 1 (2) // Dette er `forumid2`

- Her vælger den som den skal kun ÉN fra hver forumid. Dog vælger den ikke den sidste oprettede men i stedet bare en tilfældig en :S

- Håber i forstår mit spørgsmålet. Ved godt at det er MEGET langt, men ved ikke rigtig hvordan jeg skal forklare det..!
Avatar billede erikjacobsen Ekspert
17. februar 2008 - 22:53 #1
Den gør jo som den skal, og GROUP BY kan ikke bruges på den måde. Hvad med at gøre det megasimplere: lav en tabel med "sidste indlæg pr. forum". Altså een række pr forumid, hvor du putter et id til det sidste indlæg i det forumid.

Du kommer sikkert til at vise det oftere end du opdaterer.
Avatar billede alex15 Nybegynder
17. februar 2008 - 23:19 #2
Arh... jamen sådan kunne man jo self også gøre det.. Den må jeg lige tænke igennem..!
Avatar billede alex15 Nybegynder
29. april 2008 - 10:28 #3
Valgte og gøre det på en hel anden måde :) så lukket spørgsmålet.

Ellers 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
Computerworld tilbyder specialiserede kurser i database-management

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