Объединение с условным выражением

Следующий запрос работает при выполнении в SequelPro:

SELECT * FROM friend_computer LEFT JOIN computer m ON computer_id = m.id LEFT JOIN computer_status ms ON m.id = ms.computer_id JOIN friend_account pa ON friend_account_id = pa.id WHERE friend_account_id = 1 ORDER BY coalesce(ms.last_connect_time < ms.last_disconnect_time, -1) asc;

Но в Hibernate я продолжаю получать синтаксическую ошибку для следующего:

String sql2 = "SELECT pm FROM FriendComputer pm LEFT JOIN FETCH pm.computer m JOIN FETCH pm.friendAccount pa " +
        "WHERE pm.friendAccount.id = :friendId AND pm.computer = m  ORDER BY coalesce((m.computerStatus.lastDisconnectTime < m.computerStatus.lastConnectTime),-1 ) " + sortOrder;
         org.hibernate.query.Query q = session().createQuery(sql2).setParameter("friendId", friendId);

Синтаксическая ошибка возникает из-за функции объединения. Я не могу найти какие-либо онлайн-ресурсы о том, как использовать выражение внутри объединение.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ты пытаешься сделать? Явный case, по крайней мере, внес бы ясность:

order by (case when ms.last_connect_time < ms.last_disconnect_time then 2
               when  ms.last_connect_time >= ms.last_disconnect_time 1
               else 0
          end)

Это именно то, что я пытался сделать. Спасибо!

Coder95 20.06.2019 22:09

Другие вопросы по теме