三表加入MySQL

时间:2014-02-05 15:04:08

标签: php mysql sql join

我有三个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记录了由同一用户观看的集。{/ p>

我需要做的是构建一个返回所有Episodes的查询,Watch ListWatch 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

2 个答案:

答案 0 :(得分: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 :(得分: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