Avatar billede aspguf Nybegynder
25. oktober 2005 - 19:42 Der er 3 kommentarer og
2 løsninger

lidt sql hjælp

Jeg har en database som ser sådan ud..

Log
ID  logdato    Logip
1  25-10-2005  127.0.0.1
2  25-10-2005  127.0.0.1
3  25-10-2005  10.0.0.1

her er det sådan at jeg gerne vil have at den siger der er 2 poster da der er to poster som har sammen ip. og kun må tælses for en gang under denne dato..
Avatar billede sjap Praktikant
25. oktober 2005 - 20:09 #1
Du kan prøve med

SELECT DISTINCT Log.LogDato, Log.LogIP FROM Log;

men så får du ikke ID'en med. Hvis du gerne vil have ID'en med, kan du bruge

SELECT Min(Log.ID) AS MinOfID, Log.LogDato, Log.LogIP FROM Log
GROUP BY Log.LogDato, Log.LogIP;

Hvor det er den minste ID, der vises.
Avatar billede jensriis Novice
25. oktober 2005 - 21:31 #2
Hvis du gerne gerne vil have en liste over hvor mange der er pr
logdato, pr logid
så prøv denne

SELECT log.logdato, log.logip, Count(*) AS antal
FROM log
GROUP BY log.logdato, log.logip;

Så får du resultatet
logdato            logip            antal
25-10-2005    10.0.0.1    1
25-10-2005    127.0.0.1    2
Avatar billede jensriis Novice
25. oktober 2005 - 21:32 #3
UPs - jeg er ny her - så jeg sender det igen som et SVAR
Hvis du gerne gerne vil have en liste over hvor mange der er pr
logdato, pr logid
så prøv denne

SELECT log.logdato, log.logip, Count(*) AS antal
FROM log
GROUP BY log.logdato, log.logip;

Så får du resultatet
logdato            logip            antal
25-10-2005    10.0.0.1    1
25-10-2005    127.0.0.1    2
Avatar billede aspguf Nybegynder
25. oktober 2005 - 22:36 #4
Hej jensriis du er nok den der er tættes på det jeg søger er at den kan sige alle conut men det vil sku ikke helt som jeg vil..

her er min souces..
<%
Dim Conn, RS

Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\webroot\db\log.mdb;UID=admin;PWD=;"

Set rs = Server.CreateObject("ADODB.RecordSet")
set RS = conn.execute("SELECT log.Logdato, log.LogIp, Count(*) AS antal FROM log GROUP BY log.logdato, log.logip") 
If Not (rs.BOF Or rs.EOF) Then
    Response.write rs("antal")
else
    Response.write "INGEN"
end if

conn.close
set conn = Nothing
%>
Avatar billede jensriis Novice
25. oktober 2005 - 23:15 #5
Jeg er stadig ikke helt klar over hvad du vil - men hvis du f.eks ønsker antallet af unikke logip pr logdato kan du gøre sådan:

1. Opret en query(forespørgsel) (navn f.eks unikke) i databasen der ser sådan ud:
SELECT DISTINCT log.logdato, log.logip
FROM log;
2. Ændre din forespørgsel til:
SELECT unikke.logdato, Count(*) AS antal
FROM unikke
GROUP BY unikke.logdato;

Hvis dine data f.eks se ud som:

id    logdato            logip
1    25-10-2005    127.0.0.1
2    25-10-2005    127.0.0.1
3    25-10-2005    10.0.0.1
4    27-10-2005    127.0.0.1

Vil resultatet af forespørgslen i pkt 2 være:
logdato     antal
25-10-2005    2
27-10-2005    1
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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