Avatar billede lund_dk Praktikant
29. juli 2006 - 16:48 Der er 13 kommentarer og
1 løsning

SQL udtræk

Jeg har dette udtræk, hvor jeg laver en if sætning - hvordan omkriver jeg den, så den laver tjekket i sql sætningen, fremfor denne roede IF sætning.

<%
        strGenre = "select * from Genre order by genre"
        Set RSGenre = conn.Execute(strGenre)
        While Not RSGenre.EOF
       
        strGenreTjek = "select * from Film2Genre where filmid = " & ID & " "
        Set RSGenreTjek = conn.Execute(strGenreTjek)
        if rsGenretjek("genreid") = rsGenre("genreid") then
        else

       
        %>
        <option value="<%= RSGenre("GenreID")%>" <%=strselected%>><%= RSGenre("Genre")%> | <%= RSGenre("Genreid")%></option>
        <%
        end if
        RSGenre.MoveNext
        Wend
        Set RSGenre=Nothing
        %>
Avatar billede lund_dk Praktikant
29. juli 2006 - 16:51 #1
Altså den skal IKKE udskrive en genre fra tabellen "genre" hvis genreiden findes i Film2Genre ud fra filmid = " & id & "
Avatar billede korup Nybegynder
29. juli 2006 - 17:28 #2
Hvad hvis du skriver følgende:

<%
strGenre ="SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Fil2Genre ON Fil2Genre.filmid = Genre.ID"

Set RSGenre = conn.Execute(strGenre)
While Not RSGenre.EOF
%>

<option value="<%= RSGenre("GenreID")%>" <%=strselected%>><%= RSGenre("Genre")%> | <%= RSGenre("Genreid")%></option>
<%
RSGenre.MoveNext
Wend
Set RSGenre=Nothing
%>
Avatar billede lund_dk Praktikant
29. juli 2006 - 21:58 #3
Nej den dutter ikke, nu udskriver mere eller mindre "tilfældige" poster, og nogen udskrives dobbelt osv.
Avatar billede lund_dk Praktikant
30. juli 2006 - 00:16 #4
Har fået lavet en sætning som ser således ud:

strGenre = "SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Film2Genre ON Genre.genreid = Film2Genre.genreid AND Film2Genre.filmid = " & ID & " "

Den her viser KUN de generer hvor Film2Genre.genreid er lig med genre.genreid
Men faktisk skal jeg have det lige modsat, at den kun udskriver de genrer som IKKE lyder Film2Genre.genreid = Genre.genreID
Avatar billede pidgeot Nybegynder
30. juli 2006 - 00:23 #5
Så må det jo bare være at lave den om til en "ikke lig med" - != eller <>, begge kan mig bekendt bruges.
Avatar billede lund_dk Praktikant
30. juli 2006 - 00:34 #6
Skriver jeg den således:
strGenre = "SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Film2Genre ON Genre.genreid <> Film2Genre.genreid AND Film2Genre.filmid <> " & ID & " order by Genre.genre"
Så udskriver den bare mine genrer en masse gange .. så det kan man desværre ikke rigtig bare gøre..

Se http://referencer.lund.dk/filmdatabase2/sql.asp(tag dig ikke af æøå ikke virker korrekt)
Avatar billede lund_dk Praktikant
30. juli 2006 - 00:34 #7
Avatar billede pidgeot Nybegynder
30. juli 2006 - 00:35 #8
Du skal kun ændre den første betingelse, ikke den anden - dvs. strGenre = "SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Film2Genre ON Genre.genreid <> Film2Genre.genreid AND Film2Genre.filmid = " & ID & " order by Genre.genre"

Film-id'et skal jo stadig være den samme.
Avatar billede lund_dk Praktikant
30. juli 2006 - 00:39 #9
Nårh ja,selvfølgelig, men se nu, nu udskriver den dem3 gange og også dem som ikke burde udskrives (altså de 4 genrer til højre)
Avatar billede pidgeot Nybegynder
30. juli 2006 - 00:45 #10
Det er fordi du udfører querien flere gange uden at sikre dig mod gentagelser. Du skal samle dem så du får det hele i en:

strGenre = "SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Film2Genre ON Genre.genreid <> Film2Genre.genreid AND (Film2Genre.filmid = " & ID1 & " OR Film2Genre.filmid = " & ID2 & " OR Film2Genre.filmid = " & ID3 & ") order by Genre.genre"

...eller sådan her:

strGenre = "SELECT Genre.GenreID, Genre.Genre FROM Genre INNER JOIN Film2Genre ON Genre.genreid <> Film2Genre.genreid AND Film2Genre.filmid IN (" & ID1 & ", " & ID2 & ", " & ID3 & ") order by Genre.genre"

Alternativt kan du også bare selv holde styr på om der er gentagelser ved hjælp af et array el. lign. Nøjagtig kode kan jeg dog ikke give til det, da jeg ikke kan ASP.
Avatar billede lund_dk Praktikant
30. juli 2006 - 00:49 #11
Så må jeg have en ASP mand på banen..nogen frivillige? :D
Avatar billede lund_dk Praktikant
30. juli 2006 - 13:17 #12
Har rodet med skidtet hele natten, uden held.. Slet ikke nogen som kan komme mig til undsætning?
Avatar billede lund_dk Praktikant
30. juli 2006 - 14:28 #13
Har fået lavet denne som virker, må bruge den, selvom jeg helst vil have lavet det hele i min SQL sætning.


<%
strGenre = "Select * from Genre order by genre"
Set RSGenre = conn.Execute(strGenre)
While Not RSGenre.EOF

strGenreTjek = "Select * from Film2Genre where genreid = " & rsgenre("genreid") & " and filmid = " & rsfilm("ID") & ""
Set RSGenreTjek = conn.Execute(strGenreTjek)
if rsGenreTjek.EOF then
%>
<option value="<%= RSGenre("GenreID")%>"><%= RSGenre("Genre")%></option>
<%
end if
RSGenre.MoveNext
Wend
Set RSGenre=Nothing
Set RSGenreTjek=Nothing
%>
Avatar billede lund_dk Praktikant
07. august 2006 - 08:39 #14
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