Avatar billede garant11 Nybegynder
19. september 2012 - 12:09 Der er 5 kommentarer og
1 løsning

Problem med SELECT TOP

Hej.

Jeg prøver at begrænse x antal beskeder i et PM system jeg har lavet. Jeg ønsker at begrænse folks beskeder så brugeren har f.eks max 50 beskeder og skal derfor slette nogle beskeder før han/hun kan se de nye beskeder vedkommende har modtaget.
Det første forsøg så sådan her ud:
SELECT TOP 50 * FROM messages WHERE sendto = & username & ORDER BY dato ASC

Men så kommer de nyeste beskeder i bunden, så jeg prøvede:
SELECT TOP 50 * FROM beskeder WHERE sendtil = & brugernavn & ORDER BY dato ASC, id ASC

Men den virker ikke... Er der nogle som kan hjælpe mig?
Avatar billede softspot Forsker
19. september 2012 - 12:16 #1
Prøv med:

SELECT TOP 50 *
FROM beskeder
WHERE sendtil = & brugernavn &
ORDER BY dato DESC
Avatar billede garant11 Nybegynder
19. september 2012 - 12:24 #2
Jo tak, men så skal brugeren jo ikke slette sine beskeder for at gøre plads til de nyeste..

F.eks:
hvis brugeren har 51 beskeder skal der kun hentes 50 sorteret efter dato DESC men undlade nr 51 som er den nyeste så brugeren skal slette en besked før han kan se den nyeste... :-)
Avatar billede softspot Forsker
19. september 2012 - 12:36 #3
Aaaah, på den måde :-)

Nå, men så kan det være du kan bruge flg.:

SELECT TOP 50 *
FROM (
    SELECT TOP 50 *
    FROM beskeder
    WHERE sendtil = brugernavn
    ORDER BY dato ASC
) b
ORDER BY dato DESC

Idéen her skulle så være at du starter med at hente de 50 ældste og derefter sorterer disse i omvendt rækkefølge.
Avatar billede garant11 Nybegynder
19. september 2012 - 13:03 #4
Genialt man, mange tak.
Den var ved at drive mig til vanvid. :-)

Troede ikke at man kunne "dobbel SELECT" i en SQL query, kan andre se muligheder med dit eksempel der. Tænkte på om du har et link, hvor jeg kan læse mere om det?

Vil du lægge et svar op?
Avatar billede softspot Forsker
19. september 2012 - 13:08 #5
Velbekomme :-)

Jeg har ikke umiddelbart noget link, men du kunne evt. prøve at søge på Google med f.eks. "sql server reference" - det burde give dig et udgangspunkt for at undersøge SQL'ens fortræffeligheder.

Alternativt søg på "sql nested query".
Avatar billede garant11 Nybegynder
19. september 2012 - 13:13 #6
Okay, det prøver jeg lige. Skal lige have fundet hvordan man bruger den query med LEFT JOIN.

Mange tak igen.
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