Ineer Join query with where in scala slick

别等时光非礼了梦想. 提交于 2019-12-13 11:27:31

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!