Avatar billede lund_dk Praktikant
12. januar 2006 - 20:49 Der er 12 kommentarer og
1 løsning

Udtræk af database

Hej

Jeg har denne stump kode hvor jeg en liste med alle genre fra en database. Jeg skal så ud for genren, skrive hvor mange film der findes i den pågældende genre.

Problemet ligger i, at i min tabel FILM er værdierne i kolonnen GENRE kommasepareret. For en film kan være listet i flere forskellige genre.

Som mit udtræk viser nu, virker det fint, hvis en film kun har 1 genre, men så snart en film har flere genre fejler den, nogen som kan hjælpe mig ?


<%
                    strGenre = "select * from genre order by genre"
                    Set RSGenre = conn.Execute(strGenre)
                    While Not RSGenre.EOF
                   
                    'Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre " & rsGenre("genreID") & " ")
                    Antal = rsCount("count")
                    rsCount. close
                    set rsCount= Nothing
                    %>
                    <tr>
                        <td><a href="?Page=List&ID=<%= RSGenre("GenreID")%>"><%= RSGenre("Genre")%></a></td>
                        <td align="right"><font color="C0C0C0">(<%=antal%>)</font></td>
                    </tr>
                    <%
                    RSGenre.MoveNext
                    Wend
                    Set RSGenre=Nothing
                    %>
Avatar billede nielle Nybegynder
12. januar 2006 - 21:04 #1
En mulighed:

Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre =      '" & rsGenre("genreID") & "' OR Genre LIKE  '" & rsGenre("genreID") & "',%" OR Genre LIKE '%," & rsGenre("genreID") & "',%" OR Genre LIKE '%," & rsGenre("genreID") & "'"
Avatar billede nielle Nybegynder
12. januar 2006 - 21:05 #2
En anden mulighed, er at normalisere din databse ved at splitte relationen mellem film og genre ud som en seperat tabel:

FilmVsGenre:
FilmVsGenre_ID
FK_Film_ID
FK_Genre_ID
Avatar billede lund_dk Praktikant
16. januar 2006 - 19:45 #3
Den laver fejl:

Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre = '" & rsGenre("genreID") & "' OR Genre LIKE '" & rsGenre("genreID") & "',%" OR Genre LIKE '%," & rsGenre("genreID") & "',%" OR Genre LIKE '%," & rsGenre("genreID") & "'"
----------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Avatar billede nielle Nybegynder
16. januar 2006 - 19:50 #4
Prøv dette i stedet:

Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre = '" & rsGenre("genreID") & "' OR Genre LIKE '" & rsGenre("genreID") & ",%'" OR Genre LIKE '%," & rsGenre("genreID") & ",%'" OR Genre LIKE '%," & rsGenre("genreID") & "'"
Avatar billede lund_dk Praktikant
16. januar 2006 - 19:54 #5
D får jeg også fejl.
Lader til det er noget med de kommaer den er gal med

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/dvddatabase/Default.asp, line 93, column 166
Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre = '" & rsGenre("genreID") & "' OR Genre LIKE '" & rsGenre("genreID") & ",%'" OR Genre LIKE '%," & rsGenre("genreID") & ",%'" OR Genre LIKE '%," & rsGenre("genreID") & "'"
---------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Avatar billede nielle Nybegynder
16. januar 2006 - 20:00 #6
Nej, det er nu mere mig som klumre i det...

Værsgod:

Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre = '" & rsGenre("genreID") & "' OR Genre LIKE '" & rsGenre("genreID") & ",%' OR Genre LIKE '%," & rsGenre("genreID") & ",%' OR Genre LIKE '%," & rsGenre("genreID") & "'"
Avatar billede lund_dk Praktikant
16. januar 2006 - 20:03 #7
Ked af at sige det, men stadig en lille bitte fejl :P

Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EE)
Tegnet ')' var ventet
/dvddatabase/Default.asp, line 94, column 243
Avatar billede nielle Nybegynder
16. januar 2006 - 20:04 #8
Hvilken linge er 94?
Avatar billede nielle Nybegynder
16. januar 2006 - 20:04 #9
Ahhh...

Set rsCount = Conn.Execute("SELECT COUNT(*) AS count FROM film WHERE Genre = '" & rsGenre("genreID") & "' OR Genre LIKE '" & rsGenre("genreID") & ",%' OR Genre LIKE '%," & rsGenre("genreID") & ",%' OR Genre LIKE '%," & rsGenre("genreID") & "'")
Avatar billede lund_dk Praktikant
16. januar 2006 - 20:22 #10
Perfekt - det virker..

Tak for indsatsen - smider du et svar ?
Avatar billede nielle Nybegynder
16. januar 2006 - 20:26 #11
Svar :^)
Avatar billede nielle Nybegynder
23. januar 2006 - 19:30 #12
Så mangler du bare at acceptere svaret ;^)
Avatar billede nielle Nybegynder
24. januar 2006 - 16:33 #13
Takker for point :^)
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