今天我开发数据库后台统计报表的功能,需求是这样的:
- 用户可以查看医院列表,医院列表显示每个医院的医生数,订单数,以及相应地排序;
- 用户点击医生数,进入选中医院的详情,显示医生列表和医生详细信息,以及医生所下过的订单数,以及一系列的排序;
- 用户点击订单数,进入选中医院的详情,显示订单列表和详细信息,以及医生信息,以及一系列的排序;
好了看代码
@doctors_all = doctor.select("doctors.name, doctors.id, doctors.department, doctors.state ,doctors.phone, doctors.created_at,count(orders.id) AS order_count")
.joins("LEFT JOIN orders ON orders.doctor_id = doctors.id AND orders.created_at <= '#{end_date}'")
.group("doctors.id")
.order("#{query_where} #{sort}")
仔细看上面的代码:.joins("LEFT JOIN orders ON orders.doctor_id = doctors.id AND orders.created_at <= '#{end_date}'")
这里做了一件事情,就是把doctors和orders表通过id关联起来了,然后我需要实现joins left效果并且orders是有查询时间的,
问题来了,当你把
orders.created_at <= ‘#{end_date}’
这行代码写成where查询的时候,他就会失去left joins的效果,找了许久终于找到解决办法,就是在left joins的时候加上查询条件就行了
.joins("LEFT JOIN orders ON orders.doctor_id = doctors.id AND orders.created_at <= '#{end_date}'")
好了,功能终于做好了
在开发数据库后台统计报表时,需求包括按医院的医生数和订单数排序。通过Rails,实现了left join保持查询完整性,同时在left join时加入orders表的created_at时间条件,解决了where子句影响left join效果的问题,成功完成医院详情展示及排序功能。

4264

被折叠的 条评论
为什么被折叠?



