[英]SQL case statement - Select values from third based on 2 other tables
我有2個數據庫db1
和db2
db1
movies
和tickets
有2個表。 db2
- boxoffice
有1個表。
我想在獲取結果時應用以下邏輯-
if boxoffice.movie_id == movie.id
tickets.movie_id = boxoffice.movie_id
else
tickets.movie_id = movie.id
end
我寫了這樣的東西,但不完整-
select mvoie_id from tickets-- query that i was using...some syntax might be wrong but this is to give you the idea of what i was trying to do (select case when db2.boxoffice.movie_id = db1.movie.id then db1.tickets.movie_id= db2.boxoffice.movie_id else db1.tickets.movie_id = db1.movie.id end)
預期結果 -
Tickets table
id movie_id
我無法構建查詢,有人可以提供幫助嗎?
SELECT tickets.* (
SELECT (
CASE
WHEN movies.id IS NOT NULL THEN boxoffice.movie_id
ELSE movies.id
END
) AS movie_id
FROM movies
LEFT JOIN boxoffice ON boxoffice.movie_id = movies.id
) AS data_table
JOIN tickets ON tickets.movie_id = data_table.movie_id
說明:
WHEN movies.id IS NOT NULL THEN boxoffice.movie_id
, if boxoffice.movie_id == movie.id
,則檢查是否存在與您的條件匹配的條件,否則忽略這些行並僅考慮movies.id
如果我理解正確,可以嘗試一下。
SELECT t2.*
FROM (
SELECT b.movie_id
FROM boxoffice b JOIN movie m
ON b.movie_id = m.id
UNION ALL
SELECT m.id
FROM boxoffice b JOIN movie m
ON b.movie_id <> m.id
) t1 JOIN tickets t2 ON t1.movie_id = t2.movie_id
或者您可以嘗試在subuqery中使用LEFT JOIN
SELECT t2.*
FROM (
SELECT (CASE WHEN m.id IS NOT NULL THEN b.movie_id ELSE m.id END) movie_id
FROM boxoffice b LEFT JOIN movie m
ON b.movie_id = m.id
) t1 JOIN tickets t2 ON t1.movie_id = t2.movie_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.