带有Nullable Column的Squeryl Where子句无效

时间:2013-06-28 18:48:20

标签: sql scala squeryl

我有一个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线似乎没有效果,而其他条件都正常工作。只要其他条件成立,它就会变得完整。

编辑:所以这肯定与调用suppressWhen有关。在一行(l和p)中使用两个不同的表有什么问题吗?

1 个答案:

答案 0 :(得分:1)

好的,所以我放弃了使用

的禁用
(p.attr4 === -1 and l.needToCheckAttr4 === true)

和...

((p.attr4 <>  -1 and l.needToCheckAttr4 === true) or (l.needToCheckAttr4 === false))

我可能应该首先做这件事。