Tag: 关系分区

Rails中WHERE子句中的ALL运算符

该关联如下所示。 InstructorStudent has_many :fees Fee belongs_to :instructor_student 我希望得到所有给定数组中每月详细信息的教师学生。 如果其中任何一个都没有月度详细信息,那么它不应该返回任何记录。 due_month = [“2017-01-01″,”2017-02-01″,,”2017-03-01”] 以下是我试过的查询,我想获得属于所有给定的三个due_month的InstructorStudent,如果任何月份没有数据那么它应该返回nil : @fee_paid = InstructorStudent.first.joins(:fees).where(“fees.monthly_detail = ALL(ARRAY[?]::date[]) AND fees.course_type = ?”, due_month.map{|i| i },”per month”); 编辑1: @ erwin-brandstetter这是我的最终查询 InstructorStudent.where(” instructor_students.Id IN (?)”,Instructor.find(17).per_month_active_student ).joins( “INNER JOIN fees ON fees.instructor_student_id = instructor_students.id LEFT OUTER JOIN fee_payment_notifications ON fee_payment_notifications.fee_id = fees.id” ).where( “fee_payment_notifications.status ? AND fees.monthly_detail […]

所有在数组中的PostgreSQL

实现子句中最简单,最快速的方法是什么,必须匹配数组中的所有元素 – 使用IN时不仅仅是一个? 毕竟它应该像mongodb的$ all 。 考虑到conversation_users是conversation_id和user_id之间的连接表的群组对话我有类似这样的想法: WHERE (conversations_users.user_id ALL IN (1,2)) 更新 16.07.12 添加有关架构和案例的更多信息: join-table非常简单: Table “public.conversations_users” Column | Type | Modifiers | Storage | Description —————–+———+———–+———+————- conversation_id | integer | | plain | user_id | integer | | plain | 对话有很多用户,用户属于许多对话。 为了找到对话中的所有用户,我正在使用此连接表。 最后,我试图找出一个ruby on rails scope ,根据它的参与者找到我的对话 – 例如: scope :between, ->(*users) { […]

连接集必须包含所有值但可能包含更多值的SQL

我有三个表格, sports和offers_sports表offers_sports 。 class Offer < ActiveRecord::Base has_and_belongs_to_many :sports end class Sport < ActiveRecord::Base has_and_belongs_to_many :offers end 我想选择包含一系列运动名称的优惠。 他们必须包含所有的sports但可能有更多。 让我们说我有这三个优惠: light: – “Yoga” – “Bodyboarding” medium: – “Yoga” – “Bodyboarding” – “Surfing” all: – “Yoga” – “Bodyboarding” – “Surfing” – “Parasailing” – “Skydiving” 鉴于arrays[“Bodyboarding”, “Surfing”]我想要得到medium而不是light 。 我尝试过这个答案,但结果是零行: Offer.joins(:sports) .where(sports: { name: [“Bodyboarding”, “Surfing”] }) .group(“sports.name”) […]