Mysql查询未正确返回

Mysql查询未正确返回,mysql,sql,Mysql,Sql,我对这些结果有意见。我一直在努力,但运气不好 工作表 id, title ... all details 1, title1,... 2, title2,... 3, title3,... 4, title4,... 作业用户表 id,id_job,id_user 1,1,1 2,2,3 3,3,3 4,4,4 以下是工作表 id,id_job,id_user 1, 1, 3 所以基本上,用户3有两个作业(2,3),他遵循用户1的作业1。因此,如果我以

我对这些结果有意见。我一直在努力,但运气不好

工作表

   id, title ... all details
    1, title1,...
    2, title2,...
    3, title3,...
    4, title4,...
作业用户表

id,id_job,id_user
1,1,1
2,2,3
3,3,3
4,4,4
以下是工作表

id,id_job,id_user
1, 1, 3
所以基本上,用户3有两个作业(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
下面的_id将作为上述结果添加,因为用户3遵循id_作业1,所以其下面的_id=1 else=0。id_job 1,4将与jobs表联接以获取有关它的详细信息:title

我正在执行以下工作功能


谢谢大家,所以。。。看起来你想要的是:

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;
选择
jobs.id,
乔布斯,头衔,
工作。。。。,
如果following_job.id_user=3,则1或0结束为following_job
从…起
工作
job.id=job\u user.id\u job上的内部job\u用户
job.id上的左外部联接JOIN following_job=following_job.id_job
哪里
job_user.id_user 3;

根据您的模式连接所有三个表。通过
WHERE
子句进行过滤,以确保没有任何作业不是用户
3
拥有的作业。然后是一个CASE(或
IF()
)语句,用于标记作业,后跟user
3

,以便。。。看起来你想要的是:

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;
选择
jobs.id,
乔布斯,头衔,
工作。。。。,
如果following_job.id_user=3,则1或0结束为following_job
从…起
工作
job.id=job\u user.id\u job上的内部job\u用户
job.id上的左外部联接JOIN following_job=following_job.id_job
哪里
job_user.id_user 3;

根据您的模式连接所有三个表。通过
WHERE
子句进行过滤,以确保没有任何作业不是用户
3
拥有的作业。然后是一个CASE(或
IF()
)语句,将作业标记为user
3

,这似乎是所有3个表之间的简单联接。你试过什么@谢谢你的回复。我尝试了一些类似于JNevill建议的东西,但顺序不同。我将尝试按照他的建议,看看这似乎是所有3个表之间的简单连接。你试过什么@谢谢你的回复。我尝试了一些类似于JNevill建议的东西,但顺序不同。我将尝试按照他的建议,看看下面的内部连接。作业将删除除ID用户3之外的所有用户,然后where子句将其删除,所以。。。没有返回记录?我认为是左连接,然后写内部连接,因为我很特别。我已经修好了/我喜欢特别的人,他们让我微笑:P@JNevill非常感谢。让我试试。看看这是否有效。我一直在用一种错误的方式来思考这三个问题tables@JNevill我成功了。谢谢。标记为答案。以下作业的内部联接将删除除ID用户3之外的所有用户,然后where子句将删除它,因此。。。没有返回记录?我认为是左连接,然后写内部连接,因为我很特别。我已经修好了/我喜欢特别的人,他们让我微笑:P@JNevill非常感谢。让我试试。看看这是否有效。我一直在用一种错误的方式来思考这三个问题tables@JNevill我成功了。谢谢。标记为答案。