Пожалуйста, не смешивайте синтаксис соединения старой школы с современным синтаксисом (последний, который вы должны использовать только).Вот ваш исправленный запрос с использованием современного синтаксиса соединения:
SELECT
s.first_name,
s.middle_name,
s.last_name,
s.gender,
s.civil_status,
s.birthday,
s.address_line_1,
s.address_line_2,
s.address_line_3,
s.contact_no_1,
s.contact_no_2,
s.nationality,
s.religion,
s.email,
s.is_deleted,
s.nic_number,
s.is_admin,
d.department_name,
j.position_name
FROM departments d
INNER JOIN job_positions j
ON j.department_id = d.department_id
INNER JOIN employee_position e
ON e.position_id = j.position_id
INNER JOIN staff_data s
ON e.user_id = s.nic_number
WHERE
e.is_valid = 1;
Вероятно, вы видите ошибку, связанную с тем, что использование синтаксиса соединения старой школы переводит синтаксический анализатор MySQL в определенный режим, который затемне ведет себя так, как вы ожидаете.
Обратите внимание, что я также ввел псевдонимы таблиц, что облегчает чтение запроса.