Avatar billede Slettet bruger
31. juli 2002 - 21:14 Der er 19 kommentarer og
2 løsninger

Denne SQL

Jeg skal ha' flg. klaret med denne SQL:

SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"

Fra tabellen "beskeder" skal den kun vise beskeder som er SMS'er. Dvs. en "WHERE sms = true" skal ind i SQL'en et eller andet sted. Men hvor? Kan sgu ikke få det til at virke.

Derudover skal jeg bruge enten RS brugerid (fra tabellen "brugere") eller RS frabrugerid (fra tabellen "beskeder") - de er nemlig ens.

Håber der er en der kan hjælpe...
Avatar billede twm Nybegynder
31. juli 2002 - 21:16 #1
SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn FROM brugere INNER JOIN beskeder ON (brugere.brugerid = beskeder.frabrugerid) AND beskeder.sms=true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede twm Nybegynder
31. juli 2002 - 21:16 #2
Det var et svar
Avatar billede twm Nybegynder
31. juli 2002 - 21:17 #3
En lille rettelse:
  SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn FROM brugere INNER JOIN beskeder ON (brugere.brugerid = beskeder.frabrugerid AND beskeder.sms=true) GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede Slettet bruger
31. juli 2002 - 21:22 #4
Hvordan kan jeg trække RS brugerid (fra tabellen "brugere") eller RS frabrugerid (fra tabellen "beskeder") ud og smide i en variabel? Den skal jeg nemlig bruge.
Avatar billede twm Nybegynder
31. juli 2002 - 21:25 #5
SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn as etnavndusætter, brugere.brugerid as etbrugerid FROM brugere INNER JOIN beskeder ON (brugere.brugerid = beskeder.frabrugerid AND beskeder.sms=true) GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"

Nu har du lavet to navne til de to variabler, og de kan fanges på
RS("etnavndusætter")
RS("etbrugerid")
Avatar billede twm Nybegynder
31. juli 2002 - 21:26 #6
Du kan selv vælge hvad de skal hedde efter "as"
Avatar billede Slettet bruger
31. juli 2002 - 21:35 #7
Det bil den ikke rigtigt æde:

SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn as brugernavn, brugere.brugerid as brugerid FROM brugere INNER JOIN beskeder ON (brugere.brugerid = beskeder.frabrugerid AND beskeder.sms=true) GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"

= Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "brugerid" som en del af en aggregatfunktion.
Avatar billede twm Nybegynder
31. juli 2002 - 21:36 #8
Hvad er der præcist du gerne vil have ud af kaldet?
Avatar billede twm Nybegynder
31. juli 2002 - 21:38 #9
... brugere.brugerid as brugerid FROM ...
Du må ikke kalde den brugerid, kald den noget andet
Avatar billede Slettet bruger
31. juli 2002 - 21:39 #10
Når en bruger smider en besked i databasen, så får denne besked et RS der hedder "frabrugerid" som svarer til "brugerid" fra tabellen "brugere". "Frabrugerid" og "brugerid" er altså ens - de står i hver sin tabel for at lave sammenhængen.

Fordi de er ens kan jeg brugen enten "frabrugerid" eller "brugerid", som jeg skal have smidt i en variabel.
Avatar billede eagleeye Praktikant
31. juli 2002 - 21:39 #11
Du skal havde en WEHRE ind:

SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede eagleeye Praktikant
31. juli 2002 - 21:40 #12
du fik ikke sidste kommenrar i http://www.eksperten.dk/spm/241400 eller gik den tabt da eksperten var nede lidt..
Avatar billede Slettet bruger
31. juli 2002 - 21:44 #13
Hej øgle-øje ;-)

Jeg fik desværre ikke den anden besked. Tak for det. Kan du klare den med variablen også? (se 31/07-2002 21:39:37 )
Avatar billede twm Nybegynder
31. juli 2002 - 21:46 #14
SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"


Hvis du laver den her ...brugere.brugerid as dbbrugerid ...
kan du på dit recordset trække den ud med RS("dbbrugerid") hvis dit recordset vel og mærke hedder RS
Avatar billede Slettet bruger
31. juli 2002 - 21:50 #15
twm - jeg får samme fejl: Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "dbbrugerid" som en del af en aggregatfunktion.


Koden:
Set RS = server.CreateObject("ADODB.connection")
ConnString= "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("databas.mdb")
RS.open ConnString
if show = 1 then
SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
else
SQL = "SELECT TOP 10 Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
end if
set RS = RS.execute(SQL)
dbbrugerid = RS("dbbrugerid")
Avatar billede twm Nybegynder
31. juli 2002 - 21:52 #16
Prøv denne i stedet for der henter den tallet fra den anden tabel

SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, beskeder.frabrugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede Slettet bruger
31. juli 2002 - 21:54 #17
Får samme fejl
Avatar billede eagleeye Praktikant
31. juli 2002 - 21:55 #18
Du skal hvade brugerid med GROUP BY:

SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn, brugere.brugerid ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede twm Nybegynder
31. juli 2002 - 21:56 #19
SQL = "SELECT Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, beskeder.frabrugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY beskeder.frabrugerid ORDER BY Count(beskeder.frabrugerid) DESC;"

I denne bruger den group by fra den samme tabel som den kører count på, jeg ved ikke om det fejlen da jeg jo ikke kan teste det :)
Avatar billede Slettet bruger
31. juli 2002 - 22:04 #20
Tak - det ser ud til at virke. Jeg splitter pointene!
Avatar billede twm Nybegynder
31. juli 2002 - 22:06 #21
;)
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