我对这些结果有疑问。我一直在努力,但没有运气。
职位表
id, title ... all details
1, title1,...
2, title2,...
3, title3,...
4, title4,...
job_user表
id,id_job,id_user
1,1,1
2,2,3
3,3,3
4,4,4
following_job表
id,id_job,id_user
1, 1, 3
所以基本上,用户3有2个作业(2,3),并且他跟随用户1的作业1.因此,如果我以用户3登录,我想获得用户<>的所有细节作业。 3(只是我需要做的要求)。我会得到结果
id,id_job,id_user
1,1,1
4,4,4
我的目标结果是:
id,title..., following_id
1,title1,...,1
4,title4,...,0
以上结果将添加following_id,因为用户3跟随id_job 1,因此其following_id = 1 else = 0.而id_job 1,4将与jobs表连接以获取有关它的详细信息:title ...
我正在执行关注/取消关注作业功能
全部谢谢
答案 0 :(得分:2)
所以......好像你想要这样的东西:
SELECT
jobs.id,
jobs.title,
jobs....,
CASE WHEN following_job.id_user = 3 THEN 1 ELSE 0 END as following_job
FROM
jobs
INNER JOIN job_user ON job.id = job_user.id_job
LEFT OUTER JOIN JOIN following_job on job.id = following_job.id_job
WHERE
job_user.id_user <> 3;
根据您的架构加入所有三个表。通过WHERE
子句进行过滤,以确保没有用户3
没有的作业。然后是一个CASE(或IF()
)语句来标记作业,后跟用户3
。