'.' недействителен в этой позиции. Ожидается: EOF, ';' - PullRequest
0 голосов
/ 10 июля 2020

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

select distinct(al.entity) from Allocation al where al.status = 1 and  al.userDepartment.user is not null 
and al.userDepartment.department.costCode in ('finance')
and al.entity.locationFloor.id = 1 ;

, и он показывает мне ошибку на .costCode, а также на .id, говоря '.' is not valid at this position, Expecting : EOF, ';'

Любая помощь приветствуется. Заранее благодарим

Таблица распределения

Id user_department_id entity_id status
1        1              1        1

Таблица сущностей

id, entity_type_id, entity_child_type_id, location_floor_id, status
1        1                1                     1               1

Таблица User_Department

id, user_id department_id status
1      3         4           1

Таблица отделов

id name    cost_code  status
1  finance     011      1

MYSQL -Версия рабочего места - 8.0

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Попробуйте этот код:

select distinct al.entity 
(from (Allocation al join User_Department ud on al.user_department_id = ud.department_id ) 
join Department D on d.id = al.user_department_id )
join Entity E on al.entity_id = E.id 
where al.status = 1 
and  ud.user_id is not null 
and d.name in ('finance')
and E.location_floor_id = 1 ;

вместо использования точек используйте join, потому что точки используются для получения столбца указанной c таблицы, что означает, что вы можете использовать точки только один раз вот так table_name.column_name или table_alias.column_name

0 голосов
/ 10 июля 2020

Код, который вы взяли, не SQL, это Java.

Это свойство Java: al.userDepartment.department.costCode, в вашем SQL нет поля или схемы, равных costCode.

Кажется, что код Java автоматически объединяет объекты для вас.

Чтобы добиться того же в SQL, вам нужно JOIN например:

SELECT DISTINCT(al.entity)
FROM Allocation al
JOIN User_Department ud
ON a.user_id = al.user_department_id
JOIN Department dep ON al.user_department_id = dep.id
-- ...
WHERE al.status = 1 
...