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.
Я думаю, что должен изменить свой запрос, используя левое соединение, но я не понимаю, почему и как это сделать.
Может ли кто-нибудь помочь мне, я действительно застрял здесь...