Hej.
Är i behov av att göra en sökning i flera tabeller och kolumner med X antal ord i.
Exempel:
tContact(contactId, firstName, lastName)
1, 'Jan', 'Jansson'
2, 'Per', 'Johansson'
3, 'Gunnar', NULL
4, 'Jonas', 'Larsson'
tWorkRole(workRoleId, workRoleName)
1, 'Diskare'
2, 'Städare'
tContactWorkRole(contactId, workRoleId)
1, 1
2, 1
4, 2
Ponera att man utifrån detta vill ta en Stored Procedure som hämtar alla personer utifrån ett sökkriterium på ex.
"Jan diskare"
"Jansson"
"Jon Lar Städare" (detta fall vill jag skall träffa "Jonas Larsson Städare")
Denna skulle ju logiskt skrivas typ:
select
c.contactId,
c.firstName,
c.lastName,
wr.workRoleId,
wr.workRoleName
from
tContact C
left join tContactWorkRole CWR on
cwr.ContactId = c.ContactId
left join tWorkRole WR on
cwr.WorkRoleId = wr.WorlRoleId
where
'SÖKKRITERIER'
proceduren skall då bara ta en inparameter @searchCriteria och splitta på mellanslag.
Problemet är att jag inte vet hur många sökkriterier jag får in (baserat på mellanslag) samt i vilka kolumner de skall matcha.
Jag har försökt skapa en Vy som jag full-text-indexerar med en konkatenerad kolumn (på alla sökkolumner jag har). Problemet är att jag inte får använda left join i en vy jag vill indexera för att använda free-text.
Hur löser jag detta på bästa sätt egentligen?
Hälsninar,
O