Avatar billede kxh Nybegynder
18. september 2010 - 10:00 Der er 3 kommentarer og
1 løsning

SQL forespørgsel

Hej

Jeg har to tabeller den ene (logIdenter) indeholder 20 identer, og en logtabel hvor alle identerne optræder x antal gange, logtabellen indeholder ident, logtid og logevent felter.
Jeg vil gerne kunne lave en select hvor jeg henter det nyeste logevent for hver af de identer som er i logIdenter?

// Kim
Avatar billede HenrikSjang Nybegynder
18. september 2010 - 10:52 #1
Jeg har antaget af dine tabeller ser sådan ud, nu du ikke har givet os nærmere info om det:

create table logIdenter (ident int, name varchar(20))

create table logtabel (ident int, logtid datetime, logevent varchar(100))

så kan du finde det ønskede resultat med:

;WITH MyCTE
AS (
    SELECT
    ROW_NUMBER() OVER(PARTITION BY t1.ident ORDER BY logtid DESC) AS rn,
    t1.name AS IdentName,
    t2.*
    FROM
        logIdenter t1
        INNER JOIN logtabel t2 on t1.ident = t2.ident
)
SELECT
    IdentName,
    ident,
    logtid,
    logevent
FROM MyCTE
WHERE rn = 1
Avatar billede HenrikSjang Nybegynder
18. september 2010 - 10:56 #2
Og hvis din logtabel indeholder en primary key (fx en LogId INT IDENTITY PRIMARY KEY), så kan det gøres lidt mere enkelt med:

SELECT * FROM logtabel
WHERE LogId IN (
    SELECT MAX(LogId)
    FROM logtabel
    GROUP BY ident
)
Avatar billede kxh Nybegynder
18. september 2010 - 11:03 #3
Hej sjang

Perfekt, jeg fandt også frem til at bruge den primary key på min logtabel så jeg fik den til at funge ;-)

men smidt et svar så du kan få nogen point, og tak for hjælpen.
Avatar billede HenrikSjang Nybegynder
18. september 2010 - 11:19 #4
:)
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