webForumDet fria alternativet

Göra krånglig fråga enklare.

Databaser & SQL

2 svar · 195 visningar · startad av oJones

Medlem sedan dec. 200154 inlägg
Frågan#1

Hej!

Jag har en fråga om hur jag ska kunna skriva om följande fråga så den inte blir så lång och tar sådan tid att få färdig.
Just nu tar den 10-20 sekunder innan den kan presentera mitt svar.

SQL = "SELECT DISTINCT movie.title, movie.Movie_Id, movie.number, director.director, actor.actor " & _
"FROM movie, director, director_movie, actor " & _
"WHERE " & _

"movie.title like '%" & Request.Querystring("searchword") & "%' " &\_
"AND director.director_id = director_movie.director_id " & \_
"AND movie.movie_id = director_movie.movie_id " & \_

"OR movie.number like '%" & Request.Querystring("searchword") & "%' " &\_
"AND director.director_id = director_movie.director_id " & \_
"AND movie.movie_id = director_movie.movie_id " & \_

"OR director.director like '%" & Request.Querystring("searchword") & "%' " &\_
"AND director.director_id = director_movie.director_id " & \_
"AND movie.movie_id = director_movie.movie_id " & \_

"OR actor.actor like '%" & Request.Querystring("searchword") & "%' " &\_
"AND director.director_id = director_movie.director_id " & \_
"AND movie.movie_id = director_movie.movie_id " & \_

"GROUP BY movie.title ORDER BY movie.title " & Request.Querystring("sort2")

Finns det något smidigare sätt?

Medlem sedan mars 20034 471 inlägg
#2

Re: Göra krånglig fråga enklare.

oJones skrev:

...SQL = "SELECT DISTINCT movie.title, movie.Movie_Id, movie.number, director.director, actor.actor " & _
"FROM movie, director, director_movie, actor " & _
"WHERE " & _

"movie.title like '%" & Request.Querystring("searchword") & "%' " &_
"AND director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _

"OR movie.number like '%" & Request.Querystring("searchword") & "%' " &_
"AND director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _

"OR director.director like '%" & Request.Querystring("searchword") & "%' " &_
"AND director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _

"OR actor.actor like '%" & Request.Querystring("searchword") & "%' " &_
"AND director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _

"GROUP BY movie.title ORDER BY movie.title " & Request.Querystring("sort2")
..

Säkert idiotisk fråga, men varför upprepar du samma villkor om och om igen? Behövs det i MySQL? Borde du inte kunna skriva:

SQL = "SELECT DISTINCT movie.title, movie.Movie_Id, movie.number, director.director, actor.actor " & _
"FROM movie, director, director_movie, actor " & _
"WHERE " & _
"director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _
"AND (
"movie.title like '%" & Request.Querystring("searchword") & "%' " &_
"OR director.director like '%" & Request.Querystring("searchword") & "%' " &_
"OR actor.actor like '%" & Request.Querystring("searchword") & "%' )" &_
"GROUP BY movie.title ORDER BY movie.title " & Request.Querystring("sort2")

Är ingen hejare på MySQL så ovanstående behöver inte alls funka, jag kan bara inte begripa hur MySQL kan veta hur den ska tolka prioriteringen mellan alla dina AND och OR...?

Medlem sedan dec. 200154 inlägg
#3

Du har helt rätt =)

Jag gjorde lite justeringar så blev det dessutom ännu mer rätt:

SQL2 = "SELECT DISTINCT movie.title, movie.Movie_Id, movie.number, director.director, actor.actor " & _
"FROM movie, director, director_movie, actor " & _
"WHERE " & _
"director.director_id = director_movie.director_id " & _
"AND movie.movie_id = director_movie.movie_id " & _
"AND actor.actor_id = movie.movie_id " & _
"AND ( " & _
"movie.title like '%" & Request.Querystring("searchword") & "%' " &_
"OR director.director like '%" & Request.Querystring("searchword") & "%' " &_
"OR actor.actor like '%" & Request.Querystring("searchword") & "%' )" &_
"GROUP BY movie.title ORDER BY movie.title " & Request.Querystring("sort2")

Tack för hjälpen!

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)