我有一个where子句,基本上将我的表拆分为两个列表。一个列表,其中所有字段都是“完整”(非-1),然后是任何字段不完整的字段。问题是这些字段中的一个不仅可以为空,而且如果另一个字段为真,我也只想将其视为不完整。
//l and p are my two tables(This is in a join)
//passed in an option incompletes. If incompletes is true, give back incomplete values
where(
//SHOW INCOMPLETES
(
p.attr1 === -1 or
p.attr2 === -1 or
p.attr3 === -1 or
//only need to check attr4 if this var is true
(p.attr4 === -1).inhibitWhen(!l.needToCheckAttr4) //I've also tried === Some(-1)
).inhibitWhen(!incompletes.isDefined) and
// SHOW COMPLETES
(
p.price <> -1 and
p.serverCost <> -1 and
p.depreciation <> -1 and
(p.attr4 <> -1).inhibitWhen(!l.needToCheckAttr4)
).inhibitWhen(incompletes.isDefined)
)
attr4线似乎没有效果,而其他条件都正常工作。只要其他条件成立,它就会变得完整。
编辑:所以这肯定与调用suppressWhen有关。在一行(l和p)中使用两个不同的表有什么问题吗?
答案 0 :(得分:1)
好的,所以我放弃了使用
的禁用(p.attr4 === -1 and l.needToCheckAttr4 === true)
和...
((p.attr4 <> -1 and l.needToCheckAttr4 === true) or (l.needToCheckAttr4 === false))
我可能应该首先做这件事。