@vasilevconstantine

Как исправить ошибку синтаксиса?

Целиком задача звучит так:
Необходимо составить "Ведомость на получение зарплаты" (оклад-13%). Если есть несовершеннолетние дети, одна минимальная зарплата налогом не облагается.
Сотрудники
5ac4b0b32c1b406787ba411759818169.png
Дети
0212b0db9f434b87a38382c1b52538f6.png
Должности:
7dab980a45734d1fb17103ba34945c75.png
Загвоздка в том, что не получается сделать проверку на совершеннолетие старшего ребенка.
case when ( year(now()) - year(select Дети.birth from Дети,Сотрудники where Сотрудники.pers_number = Дети.pers_number_parr order by Дети.birth limit 1)<=18) then

Вот, код программы целиком:
select pers_number,fio,
case when ( year(now()) - year(select Дети.birth from Дети,Сотрудники where Сотрудники.pers_number = Дети.pers_number_parr order by Дети.birth limit 1)<=18) then 
0.87*(select salary from Должности where Должности.name_pos=Сотрудники.position)-0.13*5965 else 
(
    (select salary from Должности where Должности.name_pos=Сотрудники.position)*0.87
)
end as salary
from Сотрудники;

MySql ругается на синтаксис:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where year(now()) - year(select Дети.birth from Дети,Сотрудник' at line 2


Пожалуйста, помогите мне найти причину ошибки.
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 2
@carry-y
ну во первых во втором запросе select pers_number,fio, запятая лишняя
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Ну и правильно ругается, почитайте документацию case. Вам if нужен, на той же странице.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы