簡體   English   中英

SQL case語句-根據其他2個表從第三個值中選擇值

[英]SQL case statement - Select values from third based on 2 other tables

我有2個數據庫db1db2

db1 moviestickets有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_idif 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM