07. februar 2012 - 01:28Der er
6 kommentarer og 1 løsning
Optimal Query
Jeg har en debat tabel Der ser sådan her ud:
Posts ----------------- ID int (identity) primær nøgle BRUGER_ID int (reererer brugere i en anden tabel) OVERSKRIFT varchar KOMMENTAR varchar DATO (datetime fra hvornår indlæget er lavet) POST_ID int (fremmed nøgle til ID i samme tabel)
Dvs når POST_ID er null så er det en ny tråd og ellers er det svar på en eksisterende tråd hvor POST_ID refererer til ID på den oprindelige tråd.
Nu skal jeg bruge en list over de seneste 10 tråde der har været indlæg i, og hver tråd må kun listes en gang. Dvs selvom de 10 seneste indlæg har været i samme trå tæller det kun for en.
Threads og Posts. I thrads kan du ofte flere ting end i Posts. Thread har en LastPost date som bliver sat når der bliver posted. Værdien er NULL når der endnu ikke har været en post.
Det andet du har gang i kan godt komme til at virke, men du vil ikke få en god performance ud af det.
Hvis du vil den vej, så kan dette hjælpe dig.
SELECT * FROM Posts P INNER JOIN ( SELECT TOP 10 MAX(POST_ID) AS [POST_ID] FROM Posts WHERE POST_ID != null GROUP BY ID ORDER BY ID DESC ) AS T1 ON P.POST_ID = T1.POST_ID
Syntax burde være rigtig og give dig en ide om hvordan du kan gøre.
Hahah, ja ... en "brain fart" der, men du fangede ideen :-)
Synes godt om
Ny brugerNybegynder
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.