2017-04-20 93 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将工作表连接以获取关于它的详细信息:标题...

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

感谢所有

+0

这似乎是所有3个表格之间的简单连接。你试过了什么? – xQbert

+0

@xQbert感谢您的回复。我尝试了类似于JNevill的建议,但以不同的查询顺序。我会尝试按照他的建议看 – trinhdh

回答

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

+0

following_job上的内部连接将消除除ID_USER 3之外的所有内容,然后where子句将其消除,因此...没有记录返回? – xQbert

+0

我想在左连接,然后写INNER JOINs,因为我很特别。我修好了。 :/ – JNevill

+0

我喜欢他们让我微笑的特殊人物:P – xQbert