Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存在用于SQL的光滑函数_Sql_Scala_Slick - Fatal编程技术网

存在用于SQL的光滑函数

存在用于SQL的光滑函数,sql,scala,slick,Sql,Scala,Slick,我想在此基础上构造一个SQL,但尽量不要使用sqlu select el.oid, el.name, el.res_cat from el left join bk on (el.cat = bk.cat and bk.oid=100) where not exists (select 1 from dates bd where el.oid=bd.lots_oid and bd.bk_oid = bk.oid) and el.e_oid=bk.e_oid SQL存在或不

我想在此基础上构造一个SQL,但尽量不要使用sqlu

 select el.oid, el.name, el.res_cat from el
    left join bk on (el.cat = bk.cat and bk.oid=100)
 where not exists (select 1 from dates bd where
     el.oid=bd.lots_oid and bd.bk_oid = bk.oid) and el.e_oid=bk.e_oid
SQL
存在
不存在
是否有灵活的函数?谢谢

更新1

当我再次访问我的光滑代码时,我意识到了我的错误。我想为我设置的错误警报道歉。这不是一个答案,希望有人能帮助我纠正我的错误。目前,我正在使用Slick的纯SQL继续我的工作

我构建的巧妙的查询不起作用。它接近我想要的SQL。我所做的是

val elQuery = elTable.joinLeft(bkTable)
  .on((el, bk) => el.cat === bk.cat && bk.oid === 100)

val query = for {
  a <- elQuery if bdTable.filterNot(bd => a._2.map(_.oid === bd.bkOid).isDefined && a._1.oid ===  bd.elOid).exists
} yield a

finalQuery.result.statements.foreach(x => Logger.debug(s"xx => $x"))
val elQuery=elTable.joinLeft(bkTable)
.on((el,bk)=>el.cat==bk.cat&&bk.oid==100)
val query=for{
a._2.map(_.oid==bd.bkOid).isDefined&&a._1.oid==bd.elOid.)存在
}产生
finalQuery.result.statements.foreach(x=>Logger.debug(s“xx=>$x”))

我注意到,
filterNot
不会生成SQL
不存在
。这是我失去的另一部分

我还没有足够的声誉发表评论。但我假设您想要获取dates表中不存在的所有行。我将重写您的查询,如下所示:

SELECT
    el.oid, el.name, el.res_cat.cat
FROM
    el
    LEFT JOIN bk ON bk.cat = el.cat
        AND bk.e_oid = el.e_oid
        AND bk.oid = 100
    LEFT JOIN dates bd ON bd.lots_oid = el.oid
        AND bd.bk_oid = bk.oid
WHERE
    bd.lots_oid IS NULL
说明: 您可以通过
左连接日期
并在
中指定日期的主键(PK)为空的条件,而不是采用
不存在
,实现相同的效果。我不知道dates表的主键,所以我只添加了我知道的列。您应该将其调整为日期表的主键


LEFT JOIN
ing和
WHERE PK为NULL
可确保左联接表中不存在该行。

如果您的问题中有一些示例数据,那就太好了。您尝试过什么?是什么让你认为Slick不支持他们?在Slick里有一个嵌入式操作员。不确定这是不是你想要的though@TheArchetypalPaul我尝试了
存在
,但我不确定是否正确使用了它。阅读您提供的链接后,我将重试。我可以按照@TheArchetypalPaul建议的链接构造我想要的SQL。官方文档以最简单的方式显示了
exists
,如果我没有看到其他示例,我没有想到
SQL exists
是在for CONTRUSION筛选器中生成的。这实际上并没有回答问题,尽管它可以帮助OP获得他们想要的数据。这是一个关于Slick的问题,而不是关于如何重写查询。诚然,这不是我想要的,但如果不使用
SQL exists
,它就解决了我的问题,我会很好。出现这个问题是因为我确信
SQL存在
将解决我的问题。不过我可能错了。顺便说一句,左连接中的'bk.e_oid=el.e_oid'不会产生右结果。我认为应该把它放在左边。我还没有试过。