SQL-запрос (с объединением и подсчетом) с javax.persistence.Query

Я пытаюсь решить проблему с помощью запроса. Я искал решение, но не нашел, как его решить..

Я получил 3 таблицы:

user_table : id
game_table : id, number_player
link_user_game_table : id, user_id, game_id

Я хочу сделать следующий запрос: Перечислите все игры, где game.number_player меньше, чем следующий запрос:

(SELECT COUNT(*) 
FROM link_user_game_table lug 
WHERE lug.game_id = game_table.id
) < game_table.number_player

А где текущего пользователя нет в игре:

(SELECT COUNT(*) 
FROM link_user_game_table lug 
WHERE lug.game_id = game_table.id 
AND log.user_id = user_id_variable
) = 0

Когда я выполняю следующий запрос на MySQL Workbench, он работает:

SELECT g 
FROM game_table g 
WHERE (
   SELECT COUNT(*) 
   FROM link_user_game_table gul 
   WHERE gul.game_id = g.id
   ) < g.nbPlayer 
AND (
   SELECT COUNT(*) 
   FROM link_user_game_table gul 
   WHERE gul.game_id = g.id AND gul.user_id = :user
   ) = 0

Но, используя javax.persistence.Query, я получил следующую ошибку:

Exception Description: Syntax error parsing [SELECT g FROM Game g WHERE (SELECT COUNT(*) FROM GameUserLink gul WHERE gul.game_id = g.id) < g.nbPlayer AND (SELECT COUNT(*) from GameUserLink gul WHERE gul.game_id = g.id AND gul.user_id = :user) = 0]. 
[41, 41] The left expression is missing from the arithmetic expression.
[42, 42] The right expression is missing from the arithmetic expression.
[123, 123] The left expression is missing from the arithmetic expression.
[124, 124] The right expression is missing from the arithmetic expression.

Я думаю, что должен изменить свой запрос, используя левое соединение, но я не понимаю, почему и как это сделать.

Может ли кто-нибудь помочь мне, я действительно застрял здесь...

0 ответов

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