Avatar billede webbe Nybegynder
15. maj 2002 - 10:29 Der er 14 kommentarer og
1 løsning

"Select top 10 * " bliver til 11 resultater

Hejsa

Jeg er stødt ind i et MEGET underligt problem.

Jeg har database med en masse film.

Jeg vil så liste top 10 af de nyeste udkommede film.
Det gør jeg på følgende måde:

<%
                                strSQL = "SELECT TOP 10 * FROM Film WHERE VHS_leje < Date() OR BIO < Date() AND BIO <> #01-01-1900# ORDER BY VHS_leje DESC"
                                Set justRS = Connect.Execute(strSQL)
                                %>
                              <table border="0" cellspacing="0" cellpadding="0">
                              <%
                              do while not (justRS.bof or justRS.eof)
                             
                                If len(justRS("Nationaltitel")) > 16 Then
                                    titel = left(justRS("Nationaltitel"),16) & "..."
                                Else
                                    titel = justRS("Nationaltitel")
                                End if
                               
                                If justRS("Format") = "1" OR justRS("BIO") > "01-01-1900" Then
                                    picSti = "<img src=""grafik/icon_filmrulle_left.jpg"" width=""10"" height=""10"" border=""0"" alt=""Er i biffen nu"">"
                                Else
                                    picSti = "<img src=""grafik/icon_dvd_vhs_left.jpg"" width=""10"" height=""10"" border=""0"" alt=""Er p&aring; DVD/VHS nu"">"
                                End if
                              %>
                                <tr>
                                  <td width="13" height="10">
                                 
                                  </td>
                                  <td width="15"  height="10" align="center" valign="center">
                                        <%
                                        =picSti
                                        %>
                                  </td>
                                  <td width="106"  height="10" align="left" valign="center">
                                        <a href="moviespot.asp?edbnr=<%=justRS("Edbnr")%>" class="txtfelter"><%=titel%></a>
                                  </td>
                                  <td width="13" height="10">
                                 
                                  </td>
                                </tr>
                              <%
                              justRS.movenext
                              loop
                              %>

Nu er det sjove så, at selv om jeg kun vælger en TOP 10 * så udskrives der 11 resultater.

Er der nogen der kan give en forklaring på det?
Avatar billede steen_hansen Forsker
15. maj 2002 - 10:36 #1
VHS_leje er din ID?
Avatar billede webbe Nybegynder
15. maj 2002 - 10:38 #2
Nej - VHS_leje er et dato-felt der blot bruges til at sortere efter.

Mit ID-felt hedder Edbnr og er af typen Integer/Tal.
Avatar billede webbe Nybegynder
15. maj 2002 - 10:40 #3
VHS_leje bruges dog også som validerings-felt.

Men jeg kan ikke se at det skulle give nogen problemer!?
Avatar billede _just4fun_ Nybegynder
15. maj 2002 - 10:42 #4
Access har en eller anden weird feature (bug??) der gør at hvis man laver en 'order by' på et felt hvor der f.eks. er 11 ens, så kommer alle de 11 ud, også selv om man kun har f.eks. 'top 2'!!!!! SÅ lave en 'order by' på  noget der er unikt, f.eks. IDen, eller sørg for at datoerne du order på ikke er de samme!
Avatar billede keysersoze Ekspert
15. maj 2002 - 10:43 #5
kan der i vhs_leje stå den samme værdi flere gange?
Avatar billede steen_hansen Forsker
15. maj 2002 - 10:43 #6
SQL = "SELECT TOP 10 * FROM Film WHERE VHS_leje = 0 ORDER BY emneID DESC" < Date() OR BIO < Date() AND BIO <> #01-01-1900# ORDER BY Edbnr"

- hvor Edbnr er sat til Autonummerering og primær nøgle. Måske :o)
Avatar billede steen_hansen Forsker
15. maj 2002 - 10:44 #7
SQL = "SELECT TOP 10 * FROM Film WHERE VHS_leje < Date() OR BIO < Date() AND BIO <> #01-01-1900# ORDER BY Edbnr"

Sorry
Avatar billede webbe Nybegynder
15. maj 2002 - 10:47 #8
VHS_leje kan godt indeholde samme værdi - det er jo logisk nok idet flere film godt kan udkomme samme dato.

Det vil i denne sammenhæng heller ikke give nogen mening at sortere på Edbnr da det er den sidst udkomne film der skal stå øverst.

Noget kan derfor tyde på, at jeg bare må leve med det problemet.*G*
Avatar billede _just4fun_ Nybegynder
15. maj 2002 - 10:56 #9
iwaswondering... mon ikke man 'bare' kan lave en
"order by VHS_leje DESC, Edbnr". På den måde laver man en order på noget unikt (VHS_leje OG Edbnr)!
Avatar billede keysersoze Ekspert
15. maj 2002 - 11:00 #10
nej - du behøver skam ikke leve med problemet, men bare indsætte noget ekstra at sortere efter... en unik værdi vel at mærke!

fx;

ORDER BY VHS_leje DESC, EDBnr asc
Avatar billede webbe Nybegynder
15. maj 2002 - 11:00 #11
Hmmm - det virkede....og dog ikke.

Hvis jeg laver en ORDER BY VHS_leje, Edbnr DESC er det ikke de nyeste udkomne film der udskrives, men der udskrives dog kun 10 resultater.

Må vist bare leve med det! ;0)
Avatar billede webbe Nybegynder
15. maj 2002 - 11:03 #12
keysersoze:

Det eneste unikke felt der er i den tabel er feltet Edbnr og det er ikke et fortløbende felt.

Hvad kriterierne er for Edbnr ved jeg ikke....det er et eller andet sindrigt system et andet sted fra.
Avatar billede _just4fun_ Nybegynder
15. maj 2002 - 11:04 #13
Halooo
order by VHS_leje DESC, Edbnr
Avatar billede webbe Nybegynder
15. maj 2002 - 11:07 #14
Det vil være for omfattende at skulle indsætte fx. et ID-felt.

Hvis det laves som autonummerering får de enkelte film ikke tildelt det rigtige ID og hvis det bliver som tal skal jeg løbe samtlige film igennem og opdatere dem enkeltvist - og det tager ganske enkelt FOR lang tid.

Pointene tilfalder _just4fun_ da han kom med det mest fyldestgørende svar.
Avatar billede webbe Nybegynder
15. maj 2002 - 11:10 #15
Hovsa - det virker sq nu....thanx du...det var bare kanon.
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