Avatar billede sp Nybegynder
26. april 2001 - 11:00 Der er 52 kommentarer og
2 løsninger

optælling af unikke emailadresser i db

Hej,

Jeg har brug for noget code, som gør at jeg får det samlet antal admin-brugere i mit debatforum.

I databasen er der oprettet 3 brugernavne (d.v.s. 3 debat forums)

En adminstrators email adresse optræder f.eks. i alle 3 forums

debat1 | soerenpeter@fynboe.dk
debat2 | soerenpeter@fynboe.dk
debat3 | soerenpeter@fynboe.dk

Jeg har så lavet en sætning der tæller alle emailadresser der er emailadresser der er admin sammen.
Det jeg mangler er en der tæller alle adminstratorer sammen. D.v.s.
At selvom en emailadresse optræder flere steder i forskellige forums er det kun én adminbruger. Disse adminstratorer skal så tælles sammen.

Hvordan kan man gøre dette?

mvh
Søren Peter
Avatar billede nute Nybegynder
26. april 2001 - 11:02 #1
SELECT DISTINCT [email-lolonne] FROM [din_tabell]

/nute
Avatar billede nute Nybegynder
26. april 2001 - 11:04 #2
hmmm.....du formulerte fitt spørsmål litt merkelig. hva mener de med dette :

\"sætning der tæller alle emailadresser der er emailadresser der er admin sammen\"

jeg er godtnok norsk, men noe forteller meg at den setningen ikke er helt som den skal være ;)
Avatar billede sp Nybegynder
26. april 2001 - 11:16 #3

Jeg har så lavet en sætning der tæller alle emailadresser admin sammen.
Det var det der skulle have stået


Set rs = Conn.Execute (\"SELECT DISTINCT COUNT(*) AS Antal FROM mailinglist;\")
Response.Write \" Der er \" & rs(\"Antal\")& \" admin -brugere.\"
???
Avatar billede sp Nybegynder
26. april 2001 - 11:18 #4
Det virker ikke
Avatar billede ldanielsen Nybegynder
26. april 2001 - 14:29 #5
SELECT COUNT(DISTINCT Emailkolonne) FROM mailinglist WHERE Admin = 1

Hvis du altså har en bit-kolonne der er 1 hvis en bruger er admin.

Eller har du en særskilt tabel til adminer? Hvordan er det bygget op?
Avatar billede nute Nybegynder
26. april 2001 - 14:44 #6
du kan ikke sette SELECT DISTICNT sammen med COUNT. Tenk på at alle records har unike ID, og derfor blir alle records regnet med i din DISTINCT.
Avatar billede sp Nybegynder
26. april 2001 - 15:02 #7
Jeg får en fejlmelding ved det eks:

Set rs = Conn.Execute (\"SELECT DISTINCT COUNT(Distinct Emailad) AS Antal FROM mailinglist WHERE Confirm=1 AND Allpost=1;\")
Response.Write \" Der er \" & rs(\"Antal\")& \" admin -brugere.\"
Avatar billede nute Nybegynder
26. april 2001 - 15:03 #8
sp >> er du klar over hva DISTINCT betyr ?
Avatar billede sp Nybegynder
26. april 2001 - 15:04 #9
Sorry denne sætning giver fejlmeddelelse

Set rs = Conn.Execute (\"SELECT COUNT
(Distinct Emailad) AS Antal FROM mailinglist WHERE Confirm=1 AND Allpost=1;\")
Response.Write \" Der er \" & rs(\"Antal\")& \" admin -brugere.\"
 

 




Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression \'COUNT(Distinct Emailad)\'.

Avatar billede nute Nybegynder
26. april 2001 - 15:05 #10
prøv denne heller:

Set rs = Conn.Execute (\"SELECT DISTINCT(Emailad) FROM mailinglist WHERE Confirm=1 AND Allpost=1\")
antal = rs.RecordCount

Response.Write \" Der er \" & antal & \" admin -brugere.\"

/nute
Avatar billede sp Nybegynder
26. april 2001 - 15:05 #11
Ja jeg ved godt hvad distinct betyder. Og jeg kan godt ASP. Jeg vil bare have hjælp til at løse den op gave!!!!!!
Avatar billede nute Nybegynder
26. april 2001 - 15:09 #12
bare en liten kommentar...DISTINCT har ingenting med ASP å gjøre. DISTINCT er en kommando i SQL som man integrerer i ASP for å kalle databaser. Jeg tviler ikke på at du kan ASP, men måten du bruker DISTINCT i din SQL fikk meg til å tenke at du kanskje ikke visste helt hva den kommandoen gjorde...ingen kritikk, bare et spørsmål :)
Avatar billede sp Nybegynder
26. april 2001 - 15:13 #13
Det står at der er minu 1 adminbruger

-1 ved dit eks. nute
Avatar billede sp Nybegynder
26. april 2001 - 15:16 #14
Der skulle stå at der var 2 adminbrugere. For det er der i databasen
Avatar billede ldanielsen Nybegynder
26. april 2001 - 15:21 #15
Nåh, er det Access! Øjeblik ...
Avatar billede nute Nybegynder
26. april 2001 - 15:23 #16
hva returnerer denne :

Set rs = Conn.Execute (\"SELECT Emailad FROM mailinglist WHERE Confirm=1 AND Allpost=1\")
antal = rs.RecordCount

Response.Write \" Der er \" & antal & \" admin -brugere.\"

/nute
Avatar billede sp Nybegynder
26. april 2001 - 15:25 #17
Det returnerer \"-1\"
Avatar billede nute Nybegynder
26. april 2001 - 15:27 #18
så er det ingen records i din tabell som både har \'Confirm\' satt til 1 OG \'Allpost\' satt til 1, enkelt og greit...

/nute
Avatar billede sp Nybegynder
26. april 2001 - 15:28 #19
Jo det er der!
Avatar billede sp Nybegynder
26. april 2001 - 15:29 #20
Jeg kan selv se det i oversigten
Avatar billede nute Nybegynder
26. april 2001 - 15:32 #21
men det er noe vesentlig galt med din SQL... hvilke type felt er Confirm og Allpost?? number, text, true/false eller noe annet ?
Avatar billede sp Nybegynder
26. april 2001 - 15:32 #22
0 /1 felter
Avatar billede sp Nybegynder
26. april 2001 - 15:33 #23
Nej Jeg tror nærmere der er noget galt med din SQL!
Det her virker fint, men jeg skal bare udvide det.
set rs = Conn.Execute (\"SELECT COUNT(*) AS Antal FROM mailinglist WHERE Confirm=1;\")
Response.Write rs(\"Antal\")& \" der modtager email.\"
Avatar billede nute Nybegynder
26. april 2001 - 15:34 #24
ehhhh...0/1 felt ?? de må da ha en spesifikk type ? det er ingen kolonnetyper i Access som heter 0/1 ?!
Avatar billede sp Nybegynder
26. april 2001 - 15:36 #25
Uansaet hvad jeg skriver returnerer den \"-1\"
Om jeg sætter Confirm til 1 eller 0
og Allpost til 1 eller 0 er ligegyldigt.
hva returnerer denne :

Set rs = Conn.Execute (\"SELECT Emailad FROM mailinglist WHERE Confirm=1 AND Allpost=1\")
antal = rs.RecordCount

Response.Write \" Der er \" & antal & \" admin -brugere.\"

Avatar billede nute Nybegynder
26. april 2001 - 15:37 #26
er du sikker på at du ikke skal ha en OR istedenfor AND.

AND betyr at du skal hente ut alle records som har Confirm = 1 OG alle records som har Allpost = 1

OR betyr at du skal hente ut alle records som har Confirm = 1 ELLER alle records som har Allpost = 1

Det kan ikke være noe galt med min SQL, for jeg har bare kopiert din SQL og korrigert den så den skal være mulig å kjøre :)
Avatar billede sp Nybegynder
26. april 2001 - 15:37 #27
Jep det er accesdatabase
Avatar billede sp Nybegynder
26. april 2001 - 15:38 #28
Det virker fint, men jeg skal bare bruge en anden optælling.
Set rs = Conn.Execute (\"SELECT COUNT(*) AS Antal FROM mailinglist WHERE Confirm=0;\")

Response.Write \"Der er ialt \" & rs(\"Antal\") & \"  der ikke er bekræftet og \"
Avatar billede sp Nybegynder
26. april 2001 - 15:39 #29
Jeg er sikker på at jeg ikke at skal have OR JA!

For den skal opfylde BEGGE kriterier.
Derfor ville det være dumt at bruge OR
Avatar billede nute Nybegynder
26. april 2001 - 15:39 #30
hva mener du med \"men jeg skal bare bruge en anden optælling\" ?
Avatar billede nute Nybegynder
26. april 2001 - 15:40 #31
hvis ikke databasen er stor, kan du sende den til kh@netdoktor.com så skal jeg se på den...
Avatar billede sp Nybegynder
26. april 2001 - 15:41 #32
Din SQL virker åbenbart ikke.
Du har korigeret en SQL-sætning jeg skrev, der faktisk virkede, men jeg skal have en der ikke tager den samme email-adresse flere gangefor hver admin bruger hvis vedkommende er tilmeldt flere debatforums.
Kan det ikke lade sig gøre, så kan jeg lave et table med alle brugerne i også derefter tælle dem sammen
Avatar billede ldanielsen Nybegynder
26. april 2001 - 15:43 #33
SELECT Count(email) AS Antal
FROM (SELECT DISTINCT(email) FROM mailinglist WHERE Confirm=1 AND Allpost=1)

eller hvilken WHERE du nu skal bruge
Avatar billede sp Nybegynder
26. april 2001 - 15:44 #34
Jeg gentager lige det øverste:

Altså en adminbruger er tilmeldt f.eks. 3 debatforums
soerenpeter@fynboe.dk | debat 1
soerenpeter@fynboe.dk | debat 2
soerenpeter@fynboe.dk | debat 3

Kaj@nospam.dk | debat1
Kaj@nospam.dk | debat2
Kaj@nospam.dk | debat3

Jeg har nu en SQL-stæning der tæller dem op, så den viser at der 6 ialt. Men i virkeligheden er der kun 2 adminbrugere. Hvordan laver man såda en sætning?

Avatar billede sp Nybegynder
26. april 2001 - 15:45 #35
Heeej I glemmer semikollon!
Avatar billede nute Nybegynder
26. april 2001 - 15:47 #36
glemmer semikolon ??? hva snakker du om ?
Avatar billede sp Nybegynder
26. april 2001 - 15:51 #37
Set rs = (\"SELECT Count(emailad) AS Antal FROM (SELECT DISTINCT(emailad) FROM mailinglist WHERE Confirm=1 AND Allpost=1)\")


Den giver en fejlmeddelelse
Avatar billede sp Nybegynder
26. april 2001 - 15:51 #38
Der er skal semmikolon i SQL-sætninger
Avatar billede nute Nybegynder
26. april 2001 - 16:06 #39
sp >> du har tydeligvis ikke så god forstand på SQL som du utgir deg til å ha. Semikolon er et tegn man benytter til å separere multiple SQL statements for å eksekvere en lang rekke operasjonen en gang fx:

INSERT INTO blabla ...; INSERT INTO blabla ...; INSERT INTO blabla ...;

når man kun skal eksekvere en statment har det overhodet ingen hensikt å sette et semikolon som avslutning på sin SQL. Det er hamrende likegyldig om den er der eller ikke.
Avatar billede sp Nybegynder
26. april 2001 - 16:09 #40
OK
Avatar billede sp Nybegynder
26. april 2001 - 16:11 #41
Dete er noget jeg har fået at vide at jeg altid skal bruge semmikolon, af en fra nettet. Man kan ikke regne med noget...
Avatar billede nute Nybegynder
26. april 2001 - 16:12 #42
det skader ikke å lese litt dokumentasjon av og til ;)
Avatar billede sp Nybegynder
26. april 2001 - 16:24 #43
Nej det skader ikke med lidt dokumentation!!!!!
Men jeg kan squ da ikke finde noget!!!!!
Jeg har asp og VBScript
Avatar billede sp Nybegynder
26. april 2001 - 16:39 #44
Det skader heller ikke at fortælle at det nogle gange er ligegyldigt med semmikolon
Avatar billede nute Nybegynder
26. april 2001 - 16:46 #45
det var jo det jeg gjorde...
Avatar billede sp Nybegynder
26. april 2001 - 16:50 #46
Ja men det er jo ikke dig jeg tænker på.
Det er dem der fortalte at det var vigtigt med semmikolonner.

Hvor er der noget SQL-dokumentation?
Avatar billede nute Nybegynder
26. april 2001 - 16:55 #47
Set rs = (\"SELECT Count(emailad) AS Antal FROM mailinglist WHERE Confirm=1 AND Allpost=1 Group By emailad\")

dessuten kan du lese litt SQL her:

http://msdn.microsoft.com/library/wcedoc/sqlce/sqlceref_87j9htm

/nute
Avatar billede nute Nybegynder
26. april 2001 - 17:51 #48
Avatar billede perla Nybegynder
26. april 2001 - 18:02 #49
Denne her gør jobbet

Select count(*) from mailinglist where id in (Select max( id)  from mailinglist WHERE Confirm=1 AND Allpost=1 group by emailed)

-Per
Avatar billede sp Nybegynder
26. april 2001 - 18:25 #50
JO tak men hvordan får jeg outputtet ud?
Set rs = Conn.Execute (\"Select count(*) from mailinglist where id in (Select max( id)  from mailinglist WHERE Confirm=1 AND Allpost=1 group by emailad) \")


Kan dette lade sig gøre og hvad skal man skrive for at få tallet frem?

mvh
Søren Peter
Avatar billede nute Nybegynder
26. april 2001 - 18:27 #51
prøv:

Set rs = Conn.Execute (\"Select count(*) AS count from mailinglist where id in (Select max( id)  from mailinglist WHERE Confirm=1 AND Allpost=1 group by emailad) \")

response.write \"Antal: \" & rs(\"count\")

/nute
Avatar billede nute Nybegynder
26. april 2001 - 18:29 #52
sorry....bytt ut

AS count

med

AS found

og deretter:

response.write \"Antal: \" & rs(\"found\") 

/nute
Avatar billede sp Nybegynder
26. april 2001 - 18:34 #53
Det virker nu!
Har I noget SQL-dokumentation I kan give mig et link på???
Avatar billede nute Nybegynder
26. april 2001 - 18:36 #54
jeg har allerede gitt deg to links til brukbare sites
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