Có cách nào để thực hiện một truy vấn như thế này trong Slick:"Chọn Trong" sử dụng Slick
"select * from foo where id IN (select other_id from bar where status = 'damaged')"
Cảm ơn
Có cách nào để thực hiện một truy vấn như thế này trong Slick:"Chọn Trong" sử dụng Slick
"select * from foo where id IN (select other_id from bar where status = 'damaged')"
Cảm ơn
yes:
nhập khẩu:
import scala.slick.jdbc.{ GetResult, StaticQuery => Q }
import Q.interpolation
kết quả, và chuyển đổi sang kết quả:
case class FooResult(id: Int, name: String)
implicit val getPersonResult = GetResult(r => FooResult(r.<<, r.<<))
truy vấn của bạn:
val status = "damaged"
val q = Q.query[String,FooResult]("select * from foo where id IN (select other_id from bar where status = ?)")
val result = q.list(status)
for{
f <- foo,
b <- bar if (b.status === 'damaged' && f.id === b.other_id)
} yield f
này tạo
select x2."id" from "foo" x2, "bar" x3
where (x2."id" = x3."other_id") and (x3."status" = 'damaged')
đó là tương đương về mặt hàng trả lại. Nếu bạn cần truy vấn chính xác đó vì lý do nào đó, bạn có thể cần phải mở rộng slick hoặc sử dụng truy vấn tĩnh.
Đây là câu hỏi tương tự: http://stackoverflow.com/questions/14920153/how-to-write-nested-queries-in-select-clause –