webForumDet fria alternativet

Hur hämtar man en specifik rad i en av flera joins ?

Databaser & SQL

6 svar · 636 visningar · startad av Mattias Nordin

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

Access 2007 databas

Hur gör man en join där man har ett WHERE kriteria i join satsen. I nedan vill jag hämta ut alla filmer + movie poster + movie_file WHERE is_primary = true.

Det finns alltså en mängd film filer men bara en kan vara primary.

sql = "SELECT * FROM (((T_movie " _
&" LEFT JOIN T_movie_poster ON T_movie.movie_id = T_movie_poster.movie_id)" _
&" LEFT JOIN T_category ON T_category.category_id = T_movie.category_id)"  _
&" LEFT JOIN T_movie_files ON T_movie_files.movie_id = T_movie.movie_id [U]WHERE is_primary = 'true')[/U]"  _

:stud

Medlem sedan dec. 20051 056 inlägg
#2

Googlade lite på det och det verkade som att nedan skulle vara tillåten syntax men det fungerar ej.

" LEFT JOIN T_movie_files ON T_movie_files.movie_id = T_movie.movie_id AND is_primary = 'true' "

Medlem sedan dec. 20051 056 inlägg
#3

[raderade dubbelpost]

Lite förvirrande att man kan skriva ett snabbsvar när man är i edit läge...

Medlem sedan juni 200032 967 inlägg
#4

Vad är alltså problemet?

Medlem sedan dec. 200012 464 inlägg
#5

Byt

AND is_primary = 'true'

mot

AND is_primary

eller

AND is_primary = true
Medlem sedan dec. 20051 056 inlägg
#6

Jag har provat flera varianter men får

Microsoft JET Database Engine error '80040e14'

Join expression not supported.

/allMovies/listAll.asp, line 98

Endera så är det skit bakom spakarna (som vanligt) eller så går det inte att göra dessa typer av joins i Access 2007?!

Mitt senaste test ser ut så här:

sql = "SELECT " &varTop &" T_movie.movie_id, poster_small, film_star, org_movie_title, vote_score, vote_times, category_name, film_year " &_
" FROM (((T_movie " &_
" LEFT JOIN T_movie_poster ON T_movie.movie_id = T_movie_poster.movie_id) " &_
" LEFT JOIN T_category ON T_category.category_id = T_movie.category_id)"  &_
" LEFT JOIN T_movie_files ON T_movie_files.movie_id = T_movie.movie_id AND T_movie_files.is_primary = true)"  &_
Medlem sedan dec. 20051 056 inlägg
#7

Phew... det gick. Access ville ha lite mer paranteser bara.

" LEFT JOIN T_movie_files ON (T_movie_files.movie_id = T_movie.movie_id AND T_movie_files.is_primary = true))"  &_

Tack för hjälpen grabbar :)

254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)