发表于: 2017-07-17 10:42:05

2 1252


今天完成的事情:

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、不同的方案的不同思考


返回列表 返回列表
评论

    分享到