rails join left结合使用

来源:互联网 发布:c语言中定义数组 编辑:程序博客网 时间:2024/05/18 11:49

今天我开发数据库后台统计报表的功能,需求是这样的:

  1. 用户可以查看医院列表,医院列表显示每个医院的医生数,订单数,以及相应地排序;
  2. 用户点击医生数,进入选中医院的详情,显示医生列表和医生详细信息,以及医生所下过的订单数,以及一系列的排序;
  3. 用户点击订单数,进入选中医院的详情,显示订单列表和详细信息,以及医生信息,以及一系列的排序;

好了看代码

@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}'")

好了,功能终于做好了

0 0
原创粉丝点击