Php 三表连接MySQL
我有三个mysql表,每个表中都有一个连接唯一的id 插曲Php 三表连接MySQL,php,mysql,sql,join,Php,Mysql,Sql,Join,我有三个mysql表,每个表中都有一个连接唯一的id 插曲 epis_epsiode|u id|epis|u title 观察名单 wali|pisode|id|wali|U状态|wali|U用户|id 监视日志 wast|U插曲| id | wast|U状态| wast|U用户| id 上面显示了两个插曲,插曲123添加到用户16观看列表中,插曲456记录了一个由同一用户观看的插曲 我需要做的是构建一个查询,返回所有的剧集,其中监视列表和监视日志中的用户id都是=16根据剧集行显示
epis_epsiode|u id|epis|u title
观察名单
wali|pisode|id|wali|U状态|wali|U用户|id
监视日志
wast|U插曲| id | wast|U状态| wast|U用户| id
上面显示了两个插曲,插曲
123
添加到用户16
观看列表中,插曲456
记录了一个由同一用户观看的插曲
我需要做的是构建一个查询,返回所有的剧集
,其中监视列表
和监视日志
中的用户id都是=16
根据剧集行显示每个表的状态,否则显示null
我可以让一个表连接工作,但当我添加另一个井时,这就是问题的原因
我知道还有其他类似的问题,但在尝试了给出的大部分答案后,我仍在努力获得期望的结果
有没有人能提供一个有用的查询示例来实现上述功能
谢谢
编辑
期望的结果
结果
epis|U插曲| id | epis|U标题| wali|U状态| wast|U状态
关于小提琴的更多信息这应该有用:
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
我没有包括一个,因为没有一个像我预期的那样有效,我可以发布一个我正在做的事情的例子,但是我不认为这会有帮助,贡献者也不会有伤害,对吧?SQL JOIN和LEFT JOIN你可以通过一个联盟实现这种事情,是开始了解它们的好地方。添加我的查询作为请求感谢@Alexander的轻推;)感谢这一点,但是这只返回在
app\u watch\u列表的两个链接表中有值的结果
&app\u watch\u status
我希望返回所有的脚本,然后只需删除其中wali\u user\u id=16或wast\u user\u id=16
123 1 16
456 1 16
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.*, 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
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