首页 文章

以更好的方式编写Slick查询

提问于
浏览
0

我有table1看起来像

Table1(id: Long, name: String, parentId: Long) // self referenceing
Table2(table1Id : Long, someOtherId: Long) // FK with Table1 on table1Id

我需要在光滑中编写以下SQL查询

select t11.* from Table1 t1 
inner join Table2 t2 on (t1.id = t2.table1Id)
inner join Table1 t11 on (t11.parentId = t1.id)
where t2.someOtherId == 10

为此我写了以下代码

val query1 = Table2.query.filter(_.someOtherId === 10)
val query2 = Table1.query innerJoin query1 on (_.id === _.table1Id)
val query3 = Table1.query innerJoin query2 on (_.parentId === _._1.id)
query3.list.map(_._1)

基本上Table2是一个查找表,但它只包含父记录的映射 .

我们需要在table2上查找查询的所有父记录,然后将父记录扩展为Table1中的子记录 .

我的问题是,是否有更好的方法来编写此查询?

1 回答

  • 2

    我现在在iPad上,因此简洁 .

    我会使用monadic查询 . 检查Slick文档,查找查询,然后选择第一个内部或外部联接示例 . 它类似于你在这里寻找的东西

相关问题