Avatar billede j3ppah Novice
26. september 2007 - 13:22 Der er 3 kommentarer og
1 løsning

distinct på kollum ?

hej eksperten, som tidligere nævnt er jeg newb til sql.
jeg har det her:

SELECT *

FROM  innoteck.PeopleCounterLog b

WHERE  NOT EXISTS (

              SELECT DISTINCT AccessID FROM (

                      SELECT DISTINCT AccessID FROM innoteck.PeopleCounterLog

                      WHERE logtime >= DATEADD(day, -2, GetDate())

                      ) a

              WHERE a.AccessID = b.AccessID

                           

              )

ORDER BY AccessID




Det jeg mangler er at den stadig viser alle kollums, men at den kun viser EN pr. accessID, det skal være den seneste Logtime kollum. det kan fx stå: 12-12-2007 12:30:45 (i logtime)

som sagt. den skal vist KUN EN pr accessID og det skal være den seneste Logtime som er kommet.
Avatar billede j3ppah Novice
26. september 2007 - 15:32 #1
:S... hvis det er det med at det skal være den sidste logtime der skaber problemer kan jeg også klare mig med bare en tilfældig
Avatar billede lorentsnv Nybegynder
27. september 2007 - 07:31 #2
Når du vælger Select *, får du alle kolonner i tabellen innoteck.PeopleCounterLog. Hvis du kun vil have nogle bestemte kolonner, skal du angive de kolonner du onsker med f.eks.:
    SELECT AccessID, logtime
    FROM ....

Hvis du vil have den seneste logtime, skal du først finde de aktuelle AccessID, og derefter søge senste logtime for de aktuelle AccessID. Hvis jeg forstår dig rigtig, ønsker du at vise den seneste logtime, for de AccessID som ikke har data som er nyere end 2 dage.

Jeg ved ikke hvor stor din innoteck.PeopleCounterLog er, eller hvordan den er indekseret, så foresåørgselen kan muligvis være tung. Noget i retning af:

SELECT AccessID, Max(logtime)
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 har fjernet distinct fra den næst inderste Select ('SELECT AccessID FROM ('), da der er en distinct i den inderste Select.
Avatar billede j3ppah Novice
27. september 2007 - 08:49 #3
smid et svar det virkede Perfekt!
Avatar billede lorentsnv Nybegynder
27. september 2007 - 10:28 #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