Ну, я бы начал с ЛЕВОГО СОЕДИНЕНИЯ всех трех таблиц, чтобы начать.
Тогда; структурируйте ваше предложение where так, чтобы в нем была строка, подобная этой, для каждого параметра (в основном; применение фильтров только в том случае, если заданы параметры)
WHERE
(@customerFirstName IS NULL OR @customerFirstName = customers.FirstName)
AND (@customerLastName IS NULL OR @customerLastName = customers.LastName)
etc...
В зависимости от количества ожидаемых записей; или если производительность не хватает; Вы можете подумать о создании табличной переменной для хранения меньшего подмножества данных. (т.е. создайте таблицу #customers; затем вставьте только тех клиентов, которые соответствуют критериям поиска клиентов. Затем присоедините их к двум другим вашим таблицам)
Дайте мне знать, если я неправильно понял ваш вопрос; или если вы хотите каких-либо разъяснений.