Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 15:55 Der er 19 kommentarer og
1 løsning

SELECT TOP 5 (access)

Jeg er lige ved at give op...

Jeg har en access database med en masse links i.
Jeg vil nu gerne vise en top 5 over de links der er tilmeldt flest gange.

Jeg har denne:
("select distinct top 5 url, count(url) as antal from tabel group by url order by count(url) desc")

Og den virker sådan set fint nok, men jeg vil gerne have flere data en "url". Hvordan får jeg flettet * ind i SQl sætningen?

På forhånd tak
Avatar billede w13 Novice
14. oktober 2008 - 15:59 #1
Hvad har du prøvet?
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 16:01 #2
Jeg har prøvet med:

("select distinct top 5 * count(url) as antal from tabel group by url order by count(url) desc")

Og

("select distinct top 5 url, id, title count(url) as antal from tabel group by url order by count(url) desc")

osv...
Men intet kan jeg få til at virke.
Avatar billede w13 Novice
14. oktober 2008 - 16:03 #3
("select distinct top 5 url, id, title count(url) as antal from tabel group by url order by count(url) desc")

skal nok bare være:

("select distinct top 5 url, id, title, count(url) as antal from tabel group by url order by count(url) desc")

Dvs. et ekstra komma. =)
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 16:05 #4
Får følgende fejl på den:

Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'title' as part of an aggregate function.
Avatar billede w13 Novice
14. oktober 2008 - 16:09 #5
Måske fordi title er et reserveret ord?

Prøv:

("select distinct top 5 url, id, [title], count(url) as antal from tabel group by url order by count(url) desc")
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 16:13 #6
Det giver samme fejl alligevel.

Kan jeg gøre det på andre måder?

Jeg skal bare bruge en top 5 over de links(url), der er tilmeldt flest gange?
Avatar billede w13 Novice
14. oktober 2008 - 16:14 #7
Står der præcis:
You tried to execute a query that does not include the specified expression 'title' as part of an aggregate function.
?
Dvs. med ordet "title"?
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 16:23 #8
ja
Avatar billede w13 Novice
14. oktober 2008 - 16:24 #9
Hvilken fejlmeddelelse, hvis du fjerner title?
Avatar billede kalp Novice
14. oktober 2008 - 16:25 #10
du skal ikke bruge distinct:)
fjern distinct!!
Avatar billede kalp Novice
14. oktober 2008 - 16:25 #11
select top 5 url,[title], count(url) as antal from tabel group by url, [title] order by count(url) desc
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 16:26 #12
("select distinct top 5 url, id, count(url) as antal from pxd group by url order by count(url) desc")

Giver:

You tried to execute a query that does not include the specified expression 'id' as part of an aggregate function.
Avatar billede kalp Novice
14. oktober 2008 - 18:10 #13
virker det eller?
Avatar billede w13 Novice
14. oktober 2008 - 18:47 #14
Prøv uden extinct, som Kalp foreslår. =) Du har jo group by.
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 21:22 #15
Hej igen.
Undskyld, havde ikke lige set kalp's forslag sidst jeg svarede.

Denne her som kalp foreslår virker:
select top 5 url,[title], count(url) as antal from tabel group by url, [title] order by count(url) desc

Men den laver mere en 5 poster. Sikkert fordi der er flere der har samme værdi.
Avatar billede kalp Novice
14. oktober 2008 - 21:39 #16
måske ikke så kønt, men tror det vil virke:)

select top 5 url,[title], count(url) as antal from tabel
where url in (select distinct top 5 url from tabel desc)
group by url, [title] order by count(url) desc
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 21:44 #17
Jeg har fikset det med en:  While i < 5 osv... :)
Tak for hjælpen til jer begge.

kalp: din virkede så du får point.
Avatar billede kalp Novice
14. oktober 2008 - 22:19 #18
:-)
Avatar billede larsbachmanndk Nybegynder
14. oktober 2008 - 22:25 #19
btw: dit sidste forslag duede ikke.
Avatar billede kalp Novice
14. oktober 2008 - 22:34 #20
hvis der ikke er syntax fejl så skal det der virke:) (kan se du har en kolonne der hedder id.

select id, url,[title], count(url) as antal from tabel
where id in (select distinct top 5 id from tabel desc)
order by count(url) desc


antager at ID er unikt.
Du kan sagtens fikse det via. SQL og den her SQL er meget meget tæt på hvis der ikke er et syntax problem;) og hvis den ikke virker.
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