我有一个 where 子句,它基本上将我的表分成两个列表。一个列表,其中所有字段都是“完整的”(非 -1),然后是任何字段不完整的列表。问题是这些字段中的一个不仅可以为空,而且如果另一个字段为真,我也只想将其视为不完整。
Where 子句:
//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 行似乎没有效果,而其余条件都正常工作。也就是说,只要其他条件为真,它就会呈现为完整的。
编辑:所以这绝对与调用抑制时有关。在一行中使用两个不同的表(l 和 p)有什么问题吗?