Avatar billede j3ppah Novice
12. november 2007 - 14:33 Der er 5 kommentarer og
1 løsning

Enkelt spørgsmål

Har en sætning her som virker fint, men har lige et lille problem...

SELECT    AccessID, MAX(LogTime) AS Expr1
FROM        innoteck.PeopleCounterLog b
WHERE    (NOT EXISTS
                          (SELECT    AccessID
                            FROM          (SELECT DISTINCT AccessID
                                                    FROM          innoteck.PeopleCounterLog
                                                  WHERE    logtime >= DATEADD(day, - 2, GetDate())) a
WHERE    a.AccessID = b.AccessID))
GROUP BY AccessID
ORDER BY AccessID


Jeg skal have den til IKKE at tage accessID 175 og 0 med. og er totalt newb til SQL, men ville skyde på den kunne hedde noget i stil med
AND AccessID<>'175' AND <>'0'

Hmm... Virker så ikke har jeg jo testet :).. nogen der kan sige den korrekte sætning og hvor den skal sættes ind
Avatar billede pidgeot Nybegynder
12. november 2007 - 14:39 #1
SELECT    AccessID, MAX(LogTime) AS Expr1
FROM        innoteck.PeopleCounterLog b
WHERE    (NOT EXISTS
                          (SELECT    AccessID
                            FROM          (SELECT DISTINCT AccessID
                                                    FROM          innoteck.PeopleCounterLog
                                                  WHERE    logtime >= DATEADD(day, - 2, GetDate()) AND AccessID<>175 AND AccessID<>0) a
WHERE    a.AccessID = b.AccessID))
GROUP BY AccessID
ORDER BY AccessID

Eller den, efter min mening, lidt mere overskuelige:

SELECT    AccessID, MAX(LogTime) AS Expr1
FROM        innoteck.PeopleCounterLog b
WHERE    (NOT EXISTS
                          (SELECT    AccessID
                            FROM          (SELECT DISTINCT AccessID
                                                    FROM          innoteck.PeopleCounterLog
                                                  WHERE    logtime >= DATEADD(day, - 2, GetDate()) AND AccessID NOT IN (175,0)) a
WHERE    a.AccessID = b.AccessID))
GROUP BY AccessID
ORDER BY AccessID
Avatar billede j3ppah Novice
12. november 2007 - 14:45 #2
virker ikke den trækker stadig 175 og 0 ud
Avatar billede pidgeot Nybegynder
12. november 2007 - 14:49 #3
Beklager, mig der læste SQL'en forkert... det skulle dog være samme grundlæggende princip

SELECT    AccessID, MAX(LogTime) AS Expr1
FROM        innoteck.PeopleCounterLog b
WHERE    (NOT EXISTS
                          (SELECT    AccessID
                            FROM          (SELECT DISTINCT AccessID
                                                    FROM          innoteck.PeopleCounterLog
                                                  WHERE    logtime >= DATEADD(day, - 2, GetDate()) OR AccessID=175 OR AccessID=0) a
WHERE    a.AccessID = b.AccessID))
GROUP BY AccessID
ORDER BY AccessID

Med IN:

SELECT    AccessID, MAX(LogTime) AS Expr1
FROM        innoteck.PeopleCounterLog b
WHERE    (NOT EXISTS
                          (SELECT    AccessID
                            FROM          (SELECT DISTINCT AccessID
                                                    FROM          innoteck.PeopleCounterLog
                                                  WHERE    logtime >= DATEADD(day, - 2, GetDate()) OR AccessID IN (175,0)) a
WHERE    a.AccessID = b.AccessID))
GROUP BY AccessID
ORDER BY AccessID
Avatar billede j3ppah Novice
12. november 2007 - 14:59 #4
Mange tak, det virker perfekt.. bare smid et svar :)
Avatar billede pidgeot Nybegynder
12. november 2007 - 16:05 #5
Værsgo.
Avatar billede j3ppah Novice
13. november 2007 - 08:19 #6
jeg siger tak
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