【问题标题】:Scala Slick MySQL - performing advanced SQL stuffScala Slick MySQL - 执行高级 SQL 的东西
【发布时间】:2014-11-11 20:48:37
【问题描述】:

我的 MySQL 数据库中有 3 个表:applications、users 和 application_images。 我需要编写一个将生成下一个 SQL 的查询:

SELECT * FROM applications 
JOIN users ON applications.user_id=users.id 
LEFT JOIN applications_images ON applications_images.app_id=applications.id
WHERE applications.id=?

如何使用流畅的语法来实现这一点?

关于同一主题:如何使用 slick 编写普通的 SQL 查询(在 MySQL DB 上)?

【问题讨论】:

    标签: mysql scala playframework slick-2.0


    【解决方案1】:

    使用leftJoin 时,您使用? 方法将表投影到Option。你的可能看起来像:

    applications join users on (_.user_id === _.id) map { 
        case (app, user) => (app, user) 
    } leftJoin application_images on (_._1.id === _.app_id) map {
        case ((app, user), image) => (app, user, image.?)
    } filter(_._1.id === {id})
    

    【讨论】:

    • 谢谢,唯一需要改变的是leftJoin中字段的顺序。正确答案是应用程序在 (.user_id === _.id) map { case (app, user) => (app, user) } leftJoin application_images on (._1.id = ==_.app_id) map { case ((app, user), image) => (app, user, image.?) } filter(_._1.id === {id})
    猜你喜欢
    • 2016-11-21
    • 1970-01-01
    • 2023-03-09
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    相关资源
    最近更新 更多