Search code examples
scalaslick

Ineer Join query with where in scala slick


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 )
  }

Solution

  • 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)