2014-11-11 4 views
0

У меня есть 3 таблицы в MySQL MySQL: приложения, пользователи и application_images. Мне нужно написать запрос, который будет генерировать следующий SQL:Scala Slick MySQL - выполнение сложных 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=? 

Как это может быть достигнуто с гладким синтаксисом?

И на ту же тему: Как написать простые SQL-запросы с помощью slick (на базе MySQL)?

ответ

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

Спасибо, единственное, что нужно изменить, это порядок полей в leftJoin. Правильный ответ: приложения присоединяются к пользователям (_.user_id === _.id) map { case (app, user) => (приложение, пользователь) } leftJoin application_images on (_._1.id === _ .app_id) map { case ((приложение, пользователь), изображение) => (приложение, пользователь, изображение.?) } фильтр (_._ 1.id === {id}) – Gregra

+0

@Gregra yup good catch. Исправлена. –

Смежные вопросы