Я хочу избежать конкатенации строк для создания динамического запроса SQL в SQL 2008.
Как я могу достичь нижеуказанных функциональных возможностей, если вообще эффективно?
В таблице хранятся различные условия, которые пользователь выбрал для поиска в БД, используя одно или несколько значений для поиска в таблицах. Например, он может дать SSN или DOB или SSN и DOB.
Так что, если он дает несколько значений в качестве входных данных, тогда запрос должен найти записи, соответствующие ВСЕМ критериям. Для этого мне нужно создать запросы из показанных ниже двух таблиц
Мне всегда нужно возвращать personid, который может быть из таблицы person или из представления.
Условия поиска, заданные пользователем, будут сохранены в таблице «условий» ниже
conditions
-------------
id,custid,dob,ssn,base
person
--------
id,firstname,ssn,dob
view
--------
id,personid,base
So, IF DOB is to be searched
SELECT p.personid from conditon c
INNER JOIN person p
ON p.dob=c.dob
WHERE c.condition=1
IF SSN and base is to be searched
SELECT v.personid from conditon c
INNER JOIN view v
ON c.base=v.base
INNER JOIN person p
ON p.ssn=c.ssn
WHERE c.condition=1
IF SSN,DOB and base is to be searched
SELECT v.personid from conditon c
INNER JOIN view v
ON c.base=v.base
INNER JOIN person p
ON p.ssn=c.ssn
AND
p.dob=c.dob
WHERE c.condition=1