07. februar 2004 - 18:32Der er
8 kommentarer og 1 løsning
Hjælp til Access 2002 SQL-query
Hej!
Jeg har: - en tabel tblBrugere med alle brugere. - en tabel tblPost med alle poster oprettet af disse brugere
tblBrugere består bl.a. af: - bruger_id - bruger_navn
tblPost består bl.a. af: - post_id
Jeg vil nu gerne stykke en SQL-query sammen, som kan liste de 5 brugeres navne, som har oprettet flest poster, hvor den, som har oprettet flest poster står øverst på listen. Jeg skal ydermere kunne hente antallet af poster hver af disse brugere har oprettet.
Eksempel:
1. John - 50 poster 2. Peter - 30 poster osv.
Jeg behøver ikke noget ASP-kode - kun SQL-query'en. Nogen der kan hjælpe?
SELECT TOP 5 bruger_id, bruger_navn, COUNT(post_id) AS PostAntal FROM tblBrugere INNER JOIN tblPost ON tblPost.salg_bruger = tblBrugere.bruger_id ORDER BY PostAntal DESC
Men den kommer med følgende fejlmedd.:
Microsoft JET Database Engine (0x80040E21) You tried to execute a query that does not include the specified expression 'bruger_id' as part of an aggregate function.
SELECT TOP 5 bruger_id, bruger_navn, COUNT(post_id) AS PostAntal FROM tblBrugere INNER JOIN tblPost ON tblPost.salg_bruger = tblBrugere.bruger_id GROUP BY bruger_id, bruger_navn ORDER BY PostAntal DESC
Sætningen virkede umiddelbart ikke, da den påstår, at den ikke kender "PostAntal". Men jeg prøvede at fjerne ORDER BY-delen, og så virkede den (dog uden at sortere efter antal poster).
Derefter prøvede jeg så at ændre PostAntal i ORDER BY-delen til COUNT(salg_id), og så virkede den efter hensigten. Men hvordan kan det være, at man ikke kan bruge det alias man har givet COUNT(salg_id) tidligere i sætningen?
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.