Mysql查询无法正确返回

时间:2017-04-20 20:23:13

标签: mysql sql

我对这些结果有疑问。我一直在努力,但没有运气。

职位表

   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 ...

我正在执行关注/取消关注作业功能

全部谢谢

1 个答案:

答案 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