发表于: 2017-07-17 10:42:05
2 1251
今天完成的事情:
1、给方案设计的个模块添加上主要sql语句。
2、下午有两个小时时间在听培宇讲课。
明天计划的事情:
1、在讨论组分享屏幕评审。
遇到的问题:
1、萝卜多无论在前台或是后台都有职位、公司的多条件搜索。
比如前台的推荐职位页面,有职位搜索栏、可以根据以下这些条件查询:
关键字(jobName):
所在地区(province):
所属行业(industry):
工作经验(experience):
发布时间(releaseAt):
方案一:
job 表的表结构有已下这些字段:
id,company_id,experience,financing,releaseAt......
company 表:
id,name,province,industry,financing,
搜索条件中有“所属行业(industry)”,但问题在于 job 表中没有“industry”字段,industry 字段只存在于 company 中。
所以在当存在“行业”这个条件时,必须先借由“company_id”去 company 中查询该行业有哪些公司,再通过这些公司的ID去job表里查找对应的职位。
select id from job where 1 = 1 and experience in (3) and company_id in
(select company_id from company where industry in (1) )
and salary in(4) and name like'%测试%' and grade=1 order by release_at desc limit 0 , 8
方案二:
在 job 表中增加“industry”字段,那么动态语句就变成
select id from job where 1 = 1 and experience in (3) and company_id in
(select company_id from job where industry in (1) )
and salary in(4) and name like'%测试%' order by release_at desc limit 0 , 8
2、最新发布职位的4家认证公司,按发布时间倒序竖向轮播
方案:在 job 表里增加字段 approved (公司认证状态)
SELECT company_id, company_name, release_at FROM job WHERE approved=1 GROUP BY company_id HAVING max(release_at) ORDER BY release_at DESC LIMIT 0,4
3、公司搜索列表按照认证时间排序,未认证的公司按录入时间排序。
两种方案:
第一种:
分为两条sql语句,一次是查找认证公司的语句(where approved = 1 order by approved_at DESC) ,另一句是查找未认证的公司(where approved = 0 order by release_at DESC)。
select id from company where 1 = 1 and approved =1 and name like'%测试%' and city = '2' and financing =? order by approved_at DESC, create_at DESC limit ?,?
select id from company where 1 = 1 and approved =0 and name like'%测试%' and city = '2' and financing =? order by approved_at DESC, create_at DESC limit ?,?
另一种:
查找出所有的公司(按条件筛选过的),在内存中遍历集合,根据是否是认证公司分别放到两个集合中,分别依照他们的排序字段进行排序。
收获:
1、不同的方案的不同思考
评论