作为参考,这个问题令人难以置信,感谢所有帮助解决问题的人。
我正在尝试在事件有不同长度的预订计划中找到潜在的事件碰撞。
(a ≤ x && e ≥ y) || (a ≥ x && e ≤ y) || (a ≤ x && e ≤ y) || (a ≥ x && e ≥ y)
我正在使用DataMapper来完成此任务,但我以前的查询是错误的。然后我想出了上面的内容,但我不确定如何将其转换为查询。以下是我对参考的不正确的查询。
class Table
def is_available?
return false if (TableBooking.all(:at.lte => params[:at], :at.gt => params[:ending], :ending.gt => params[:at], :ending.gte => params[:at]).count > 0)
end
end
答案 0 :(得分:2)
我认为你真正想要的是:
(a ≤ x && e ≥ y) || (a ≥ x && e ≤ y) || (a ≤ x && e ≥ x) || (a ≤ y && e ≥ y)
因为那占了(按照上面的顺序对应每个组)......
前两个部分与原始部分相同,但我必须更改后两部分以使其有意义并且正确。
这实际上也可以简化,因为#3和#4会自动捕获#1,所以你真的只需要#2-4:
(a ≥ x && e ≤ y) || (a ≤ x && e ≥ x) || (a ≤ y && e ≥ y)
答案 1 :(得分:0)
您提供的不平等可以简化为
(a ≤ x || a ≥ x) && (e ≤ y || e ≥ y)
可以进一步简化为
True
这可能是代码无效的原因。