В настоящее время я делаю сложный запрос с параметрами, которые будут выполнять поиск в связанных таблицах, это работает отлично, но если мне нужно сказать что-то вроде «Я хочу найти людей, у которых нет определенного условия», Мне нужно написать одно и то же предложение where дважды: один раз с IN и один раз с NOT IN. Есть ли способ избежать этого сценария? Что-то вроде functionX (выберите id из tablex): boolean
В настоящее время я получил что-то вроде этого:
select * from tpatient
where
(includeparameter1 and TPatient.Id in
(select patientid from tdoctorvisit where x ilike parameter1)
)
or (
(includeparameter1 = false) and TPatient.Id not in (
select patientid from tdoctorvisit where x ilike parameter1)
)
Можно ли как-то улучшить этот запрос ниже?
select * from tpatient where
functionX(includeparameter1, TPatient.id,
select patientid from tdoctorvisit where x ilike parameter1)
Это сделало бы мой запрос немного меньше, так как я получил дюжину предложений where.