Är det inte bara att joina in T_PUP_PERSONUPPGIFTER också då?
Den SP som jag använt för sökning har funkat bara fint tills givetvis en kund vill förbättra sökfunktionen, eftersom SPn har ex. antal år på nacken och kunder har inte haft några större krav på sökfunktionen så har den funkat och varit tillfredställande. Iofs inte jag som skrivit den från början, men i alla fall här kommer mitt försök att förklara problemet.
Innan min modifiering för att förbättra sökfunktionen så kunde man enkelt kolla vilka träffar som fanns inom:
.. (@ObjektIdavdelning_o = null OR T_PUP_PERSONUPPGIFTER.OBJ_ID_ORGANISATIONSTILLHORIGHET IN (SELECT OBJ_ID FROM #ObjektTemp)) ..
Detta funkade bra eftersom T_PUP_PERSONUPPGIFTER fanns med i den huvudsakliga selectsatsen.
SELECT DISTINCT
T_FOG_FORSLAG.FOG_DIARIENUMMER As Diarienummer,
T_FOG_FORSLAG.FOG_NAMN AS Namn,
FOG_INLAMNAT_DATUM AS InlamnatDatum,
FTS_NAMN AS Forslagsstatus,
T_FOG_FORSLAG.FOG_ID AS Id,
T_FGG_FORSLAGSGIVARE.FGG_ANONYM as Anonym
FROM T_FOG_FORSLAG, T_PUP_PERSONUPPGIFTER, T_FGG_FORSLAGSGIVARE, T_FTS_FORSLAGSSTATUS
WHERE
T_FGG_FORSLAGSGIVARE.FOG_ID = T_FOG_FORSLAG.FOG_ID AND
T_FOG_FORSLAG.FTS_ID = T_FTS_FORSLAGSSTATUS.FTS_ID AND
T_FOG_FORSLAG.FOG_ID = T_FGG_FORSLAGSGIVARE.FOG_ID AND
(@ObjektIdavdelning_o = null OR T_PUP_PERSONUPPGIFTER.OBJ_ID_ORGANISATIONSTILLHORIGHET IN (SELECT OBJ_ID FROM #ObjektTemp)) AND ...
Som nu är grovt om skriven till:
select
fog.FOG_DIARIENUMMER As Diarienummer,
fog.FOG_ID AS Id,
fog.FOG_NAMN AS Namn,
fog.FOG_INLAMNAT_DATUM AS InlamnatDatum,
fts.FTS_NAMN AS Forslagsstatus,
fgg.FGG_ANONYM As Anonym
from
T_FOG_FORSLAG fog inner join
(
select
ifog.FOG_ID,
(Count(*) * 1.0 / @Wordcount) as traffpoang
from
T_FOG_FORSLAG ifog
inner join @Table tbl on
' '+ ifog.FOG_DIARIENUMMER+' '+ifog.FOG_NAMN+' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_PROBLEMBESKRIVNING,''))+' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_FORSLAG,'')) +' '+CONVERT(VARCHAR(8000),ISNULL(ifog.FOG_FORVANTAT_RESULTAT,'')) + '' LIKE '%'+ tbl.item +'%'
where ...
efter WHERE i denna kommer då de ytterligare kriterierna för att minska antalet träffar. Nu funkar givetvis inte denna kodsnutt:
(@ObjektIdavdelning_o = null OR T_PUP_PERSONUPPGIFTER.OBJ_ID_ORGANISATIONSTILLHORIGHET IN (SELECT OBJ_ID FROM #ObjektTemp))
Har skrivit om hela sökfunktionen och detta är det som har skapat mest huvudbry.. och jag börjar sakta men säkert bli flint.
Hur skulle man kunna skriva om
(@ObjektIdavdelning_o = null OR T_PUP_PERSONUPPGIFTER.OBJ_ID_ORGANISATIONSTILLHORIGHET IN (SELECT OBJ_ID FROM #ObjektTemp))
För att funka med den nya varianten.
