[英]Three Table Join MySQL
我有三个mysql表,每个表都有一个唯一的连接ID
123 Test
456 Another Test
123 1 16
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
所需结果
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.