29. juli 2006 - 16:48Der 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 %>
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
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..
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"
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.
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 %>
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.