簡體   English   中英

三表聯接MySQL

[英]Three Table Join MySQL

我有三個mysql表,每個表都有一個唯一的連接ID

情節


epis_epsiode_id || epis_title

123                Test
456                Another Test

觀察清單


wali_pisode_id || wali_status || wali_user_id

123               1              16

觀察日志


wast_episode_id || wast_status || wast_user_id

456                1              16

上面顯示了兩個情節,其中情節123添加到用戶16監視列表中,情節456記錄了同一用戶的觀看情況。

我需要做的是建立一個查詢,該查詢返回所有Episodes ,並且“ Watch List和“ Watch Log中的user_id為= 16 ,根據情節行顯示每個表的狀態,否則顯示為null

我可以使一個表連接正常工作,但是當我添加另一個表時,因此是問題的原因。

我知道與此類似的其他問題,但是嘗試了大多數答案,因為我仍在努力獲得期望的結果。

有人可以幫忙張貼一個查詢示例,以實現上述目標嗎?

謝謝

編輯

SELECT 
    e.*, 
    wl.wali_status,
    ws.wast_status 
FROM 
    meta_episodes e
LEFT OUTER JOIN
    app_watch_list wl
    ON wl.wali_episode_id = e.epis_episode_id
    AND wl.wali_user_id = 16
LEFT OUTER JOIN
    app_watch_status ws
    ON ws.wast_episode_id = e.epis_episode_id
    AND ws.wast_user_id = 16

所需結果

結果


epis_episode_id || epis_title || wali_status || wast_status


123                Test          1              NULL
456                Another…      NULL           1

這應該工作:

SELECT  E.epis_episode_id, 
        E.epis_title,
        WLI.wali_status,
        WLO.wast_status
FROM `Episodes` AS E
LEFT JOIN `Watch List` AS WLI
    ON E.epis_episode_id = WLI.wali_episode_id
    AND WLI.wali_user_id = 16
LEFT JOIN `Watch Log` AS WLO
    ON E.epis_episode_id = WLO.wast_episode_id
    AND WLO.wast_user_id = 16
SELECT e.*, wali_status, wast_status
FROM meta_episodes e
LEFT JOIN app_watch_list wl ON e.epis_epsiode_id = wl.wali_episode_id AND wali_user_id = 16
LEFT JOIN app_watch_status ws ON e.epis_epsiode_id = ws.wast_episode_id AND wast_user_id = 16

有關提琴的更多信息http://sqlfiddle.com/#!2/071751/13

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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