问题
I have two tables address ,UserAddressMapping in Adress table Adrressid ,Address is there and in the third table i mapped this userid and Addresss id
In sql
Select a.Addressid,a.AddressNmae
from address table a
inner join UserAdrressmaping b on a.Adessressid=b.Adreesid
where userid=1
How to write this thing in Scala slick This is far what i have done
def innerJoin1(UserId:Int): Future[Seq[UserRegister]] = {
val join=address.join(addressid).on(_.Userid === _.UserId)
dbConfig.run(join.result )
}
回答1:
For inner join you could use slick applicative-join with filter clause. For example:
val query = for {
(address, userAddressMapping) <- Address join UserAddressMapping on (_.id === _.addressId)
if userAddressMapping.userId === 1
} yield (address.id, address.name)
dbConfig.run(query.result)
回答2:
Just an addition to the previous one. If you happen to have BigDecimal
for Id
, do not forget to cast it:
if p.userId === BigDecimal.valueOf(42)
来源:https://stackoverflow.com/questions/51910691/ineer-join-query-with-where-in-scala-slick