三表连接 MySQL
Posted
技术标签:
【中文标题】三表连接 MySQL【英文标题】:Three Table Join MySQL 【发布时间】:2014-02-05 15:04:07 【问题描述】:我有三个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_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
【问题讨论】:
我没有包括一个,因为似乎没有一个按我的预期工作,我可以发布一个我正在做的例子,但我认为这对贡献者没有帮助 不会也有害吧? SQL JOIN 和 LEFT JOIN 你可以用 UNION 来实现这种事情,w3schools.com/sql/sql_union.asp 是开始了解它们的好地方。 将我的查询添加为请求,感谢@Alexander 的推动;) 【参考方案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
【讨论】:
【参考方案2】: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
【讨论】:
谢谢你,但这只会返回app_watch_list
和app_watch_status
的两个链接表中有值的结果我希望返回所有剧集
然后删除WHERE wali_user_id = 16 OR wast_user_id = 16
以上是关于三表连接 MySQL的主要内容,如果未能解决你的问题,请参考以下文章