繁体   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