2017-04-20 132 views
0

- 编辑MySQL查询没有返回正确

我仍然没有得到它的一些原因。我会详细说明我的问题。

工作表

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所以,如果我以用户3的身份登录,我想获得用户<> 3的所有详细信息(只是要求nt,我需要做)。 我会得到的结果

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,否则= 0。而id_job 1,4将工作表连接以获取关于它的详细信息:标题...

我做后续/取消关注工作的功能

感谢所有

+1

你有一个包含你想要搜索的工作ID的表吗? –

+1

为什么在结果中id_job 3的id 2?该表将id 1与它关联。 –

+1

你想在第一列中做什么?行号还是什么? – Sam

回答

3

通常,您将有一个包含你要搜索的id_job值/匹配,像这样第二个表:

has_jobs 

id_job | (other columns...) 
2 
3 

然后,你可能只是左加入has_jobsfollowing_job得到的结果你想:

SELECT t2.id 
     t1.id_job, 
     CASE WHEN t2.id_job IS NULL THEN 0 ELSE 1 END AS following_id 
FROM has_jobs t1 
LEFT JOIN following_job t2 
    ON t1.id_job = t2.id_job 

如果你没有一个实际的has_jobs表,那么你可以使用内嵌表代替:

SELECT t2.id 
     t1.id_job, 
     CASE WHEN t2.id_job IS NULL THEN 0 ELSE 1 END AS following_id 
FROM 
(
    SELECT 2 AS id_job 
    UNION ALL 
    SELECT 3 
    -- add more IDs here if wanted 
) t1 
LEFT JOIN following_job t2 
    ON t1.id_job = t2.id_job 
+0

Biegeleisn:谢谢你的回答。我一直在努力,但没有运气。你可以看看我的帖子,我编辑。非常感谢 – trinhdh