मेरे पास 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

क्या कोई इस प्रश्न में मदद कर सकता है, क्योंकि मैं इसे बनाने में सक्षम नहीं हूं?

0
Gautam 14 जुलाई 2019, 12:20

2 जवाब

सबसे बढ़िया उत्तर

अगर मैं सही ढंग से समझूं तो आप इसे आजमा सकते हैं।

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

या आप सबबुकरी में 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
0
D-Shih 14 जुलाई 2019, 12:39
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 कंडीशन if boxoffice.movie_id == movie.id जैसा कोई मैच है, यदि नहीं तो यह उन पंक्तियों को अनदेखा करता है और केवल movies.id पर विचार करता है।

1
praveen kumar 14 जुलाई 2019, 18:35