2014-02-05 114 views
2

我有三個MySQL表,在每個三個表加入MySQL的

情節


epis_epsiode_id連接唯一的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 ListWatch Log的user_id是= 16顯示針對情節行或其他每個表中的狀態顯示null

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

我意識到類似的其他問題,但由於我仍然努力獲得理想的結果,所以嘗試了大部分答案。

是否有一個非常有用的發佈一個查詢示例,將實現上述?

由於

EDIT

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 

+0

在哪裏查詢? – Alexander

+0

我沒有包括一個,因爲沒有人像我打算的那樣工作,我可以發佈一個我正在做的事情的例子,但是我認爲它不會對撰稿人 –

+0

有害,對嗎? – Alexander

回答

2

這應該工作:

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 
1
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

+0

感謝這一點,但是這隻會返回結果哪裏有'app_watch_list'&'app_watch_status'兩個鏈接表中的值我正在尋找返回所有情節 –

+0

然後,只需刪除'WHERE wali_user_id = 16或wast_user_id = 16' –