Привет! Необходимо решить такую задачу.
Имеется четыре таблицы: person, profession, qualification, organization. Последние три таблицы связаны с первой как "много ко многим" при помощи доп. таблиц (person2profession, person2qualification, person2organization). Стоит задача написать хранимую процедуру которая будет принимать три параметра: @ProfessionID, @QualificationID, @OrganizationID. Каждый параметр может содержать либо значение ключевого поля соответствующей таблицы либо НОЛЬ. В процедуре нужно выбрать значения из person, отфильтрованные по полям ProfessionID, QualificationID, OrganizationID из соотв. таблиц. Что-то вроде:
SELECT * FROM person
INNER JOIN person2profession ON person2profession.personID = person.personID
INNER JOIN person2qualification ON person2qualification .personID = person.personID
INNER JOIN person2organization ON person2organization .personID = person.personID
WHERE person2profession.professionID = @ProfessionID
AND person2qualification.qualificationID = @QualificationID
AND person2organization.organizationID = @OrganizationID
Но вся проблема в том, что когда какой-то параметр процедуры (@ProfessionID, @QualificationID, @OrganizationID) принимает нулевое значения, он не должен участвовать в фильтрации. Помогите пожалуста докумекать как это грамотно реализовать (конечно же на первом месте производительность процедуры).
Спасибо.