Avatar billede micplus Nybegynder
04. april 2006 - 20:43 Der er 10 kommentarer og
1 løsning

Problemer med distinct

Set message = Conn.Execute("SELECT DISTINCT TOP 3 star FROM poppe ORDER BY star DESC") giver fejlen "Item cannot be found in the collection corresponding to the requested name or ordinal"

Set message = Conn.Execute("SELECT TOP 3 * FROM poppe ORDER BY star DESC") giver top 3, med dubletter.

Hvad gør jeg galt i den første ?
Avatar billede showsource Seniormester
04. april 2006 - 20:47 #1
Måske
Set message = Conn.Execute("SELECT DISTINCT(TOP 3) FROM poppe ORDER BY star DESC")
Avatar billede eagleeye Praktikant
04. april 2006 - 20:48 #2
Det er fordi du forsøger at udskrive en kolonne fra et reocrdset som du íkke henter ud med SQL sæningen.
Avatar billede eagleeye Praktikant
04. april 2006 - 20:49 #3
hov et lille eks:

Set message = Conn.Execute ("SELECT navn FROM tabel..")


hvis du så et det bruger message ("brugernavn") vil den fejl komme, så tjek de hvor message("xxx") bruges.
Avatar billede micplus Nybegynder
04. april 2006 - 20:53 #4
De efterfølgende 2 hedder;

do while not message.EOF
    f_id = message("id")

Det er allerede her den laver fejlen - hvilket jeg ikke helt forstår (?)
Avatar billede eagleeye Praktikant
04. april 2006 - 20:56 #5
Men denne SQL sætning henter du kun kolonnen star og ikke id:

Set message = Conn.Execute("SELECT DISTINCT TOP 3 star FROM poppe ORDER BY star DESC")


Så enten skal id med i SQL sætningen eller du rette koden så den ikke bruger kolonnenen id:

Set message = Conn.Execute("SELECT DISTINCT TOP 3 id, star FROM poppe ORDER BY star DESC")
Avatar billede micplus Nybegynder
04. april 2006 - 21:00 #6
ok - nu begynder jeg at forstå. Problemet er at jeg henter data fra 8 kolonner, og det bliver vist for megt ;) .. er der en bedre måde at sortere på, således at jeg ikke får dubletter?
Avatar billede eagleeye Praktikant
04. april 2006 - 21:06 #7
id lyder som en autonummer kolonne som vil gære forskellig fra post til post så hvis du har to med samme antal i star vil du få begge når id kolonnen er med da id'ne er forskellige.

Hvad er det du gerne vil havde ud, hvis vi har denne lille tabel:

id  star
1      5
2      5
3      4
4      5
5      2

hvad ønsker du SQL sætningen skal hente?
Avatar billede micplus Nybegynder
04. april 2006 - 21:09 #8
i det tilfælde her: id 1,2,4 - da jeg ønsker en top 3 efter 'star' - dog uden dubletter, dvs:

id  star
1  5
2  5
3  5
4  5
5  3

skal give id 1,2,3 - og ikke som med en "top 3 *" 1,2,3,4
Avatar billede eagleeye Praktikant
04. april 2006 - 21:14 #9
Ok så det man gør er også at sætte ID kolonnen ind i ORDER BY og ikke bruge DISTINCT. TOP x tager ikke "3 poster" men "3 forskellige" poster aå prøv at rette det til:


Set message = Conn.Execute("SELECT TOP 3 id, star FROM poppe ORDER BY star DESC, id")
Avatar billede micplus Nybegynder
04. april 2006 - 21:21 #10
herligt, det virkede da jeg fik koblet alle 8 på :
TOP 3 id, star,xxx,yyy,zzz,ppp FROM .....

Tak for hjælpen - jeg syntes at vi skal lukke her med et svar.
Avatar billede eagleeye Praktikant
04. april 2006 - 21:24 #11
ok jamen så er her et svar ;)
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