我有2个型号显示和预订。一个节目有很多预订。每个预订都有一个start_date和end_date。我想找到i)没有预订或ii)预订不与时间间隔[开始,结束]重叠的节目。到目前为止,我有:
Show.joins("LEFT JOIN bookings ON bookings.show_id = shows.id").where("bookings.start_date > ? OR bookings.end_date < ?, end, start)
但它没有返回没有预订的节目。如何在查询结果中包含没有预订的节目?
答案 0 :(得分:3)
试试这个:
Show.joins("LEFT JOIN bookings ON bookings.show_id = shows.id").where("bookings.id IS NULL OR bookings.start_date > ? OR bookings.end_date < ?", end, start)