我有一个看起来像
的table1Table1(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中的子记录。
我的问题是,是否有更好的方法来编写此查询?
答案 0 :(得分:2)
此刻我正在iPad上,因此简洁。
我使用monadic查询。检查Slick文档,查找查询,然后选择第一个内部或外部联接示例。它类似于你在这里寻找的东西