[英]how do i join 2 seperate joins in postgres?
我正在學習 postgres 連接並且我一直在解決這個問題。 基本上我試圖加入由兩個連接派生的兩個表,但我收到以下錯誤:
錯誤:“join”處或附近的語法錯誤
第 3 行:mov1.genre_id = mov2.genre_id 上的內連接
select *
from(
(select
id, genre_id
from
movie inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 1375666) as mov1
inner join on mov1.genre_id = mov2.genre_id
(select
id, genre_id
from
movie inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 0278504) as mov2
)
加入的順序在最后
select *
from
(select
id, genre_id
from
movie inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 1375666) as mov1
inner join
(select
id, genre_id
from
movie inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 0278504) as mov2
on mov1.genre_id = mov2.genre_id
如果您可以輕松地使用“表表達式”(又名“派生表”或“內聯視圖”),那么就去做吧。
但是,如果它們變得過於復雜,CTE(通用表表達式)就會派上用場。 您可以單獨構建每個表表達式,然后您可以連接它們。 通過這種方式,您可以逐步構建查詢。
例如:
with
mov1 as ( -- declaring the first table expression "mov1"
select
id, genre_id
from movie
inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 1375666
),
mov2 as ( -- declaring the second table expression "mov2"
select
id, genre_id
from movie
inner join in_genre on movie.id = in_genre.movie_id
where movie.id = 0278504
)
select * -- finally the main SELECT looks a lot simpler
from mov1
join mov2 on mov1.genre_id = mov2.genre_id
作為旁注,CTE 可以在查詢中被任何后續 CTE 或主查詢重復使用多次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.