- 编辑
我仍然因某些原因没有得到它。我会详细介绍我的问题。
职位表
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 :(得分:3)
通常,您会有第二个表,其中包含您要搜索/匹配的has_jobs
id_job | (other columns...)
2
3
值,如下所示:
has_jobs
然后,您可以将following_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
表,那么您可以改为使用内联表:
long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
long diff = end - start;
DateTime dt = new DateTime(diff);