1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
PROCEDURE [dbo].[sp_getCandidatsRechercheByPertinence]
(
-- Paramètres de pagination
@startRowIndex INT,
@maximumRows INT,
-- Chaine à rechercher
@Mots VARCHAR(1024)
)
AS
SELECT RowNum
,CandidatID
,CandidatPrenom
,CandidatNom
,CandidatEmail
,CandidatTelephone
,CandidatCompetences
,CandidatFonction
,ExperienceValeur
,DiplomeValeur
,CVDateExtraction
,SiteOrigineNom
,SuiteValeur
,Classement
,Cnt
FROM
( SELECT -- Informations sur le candidat
C.CandidatID
,C.CandidatNom
,C.CandidatPrenom
,C.CandidatEmail
,C.CandidatTelephone
,C.CandidatCompetences
,C.CandidatFonction
,E.ExperienceValeur
,E.ExperienceID
,D.DiplomeValeur
,D.DiplomeID
,S.SuiteValeur
-- Informations concernant le CV le plus récent du candidat
,CV.CVDateExtraction
,SO.SiteOrigineNom
-- Pertinence du résultat
,Key_Table.RANK as Classement
-- Numéro de ligne
,ROW_NUMBER() OVER(ORDER BY Key_Table.RANK DESC) as RowNum
,COUNT(*) OVER() AS Cnt
FROM T_Candidat C
-- Informations sur le Candidat
INNER JOIN dbo.T_CV CV ON C.CandidatID = CV.CVCandidatID
-- Informations sur le diplome du candidat
INNER JOIN dbo.T_Diplome D ON C.CandidatDiplomeID = D.DiplomeID AND D.DiplomeIsActif = 1
-- Informations sur l'expérience du candidat
INNER JOIN dbo.T_Experience E ON C.CandidatExperienceID = E.ExperienceID AND E.ExperienceIsActif = 1
-- Informations sur la suite de la candidature
INNER JOIN dbo.T_Suite S ON C.CandidatSuiteID = S.SuiteID AND S.SuiteIsActif = 1
-- Informations sur le site d'origine du CV
INNER JOIN dbo.T_SiteOrigine SO ON CV.CVSiteOrigineID = SO.SiteOrigineID AND SO.SiteOrigineIsActif = 1
-- Pour cibler la recherche
INNER JOIN FREETEXTTABLE(dbo.T_CV, CVDocument, @Mots) AS Key_Table ON CV.CVID = Key_Table.[KEY]
WHERE CV.CVDateExtraction = (
SELECT TOP 1 CV.CVDateExtraction
FROM T_CV
WHERE CV.CVCandidatID = C.CandidatID
ORDER BY CV.CVDateExtraction DESC)
) as CandidatInfo
-- On délègue la pagination à SQL Server en ne renvoyant qu'une partie du resultset
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1
-- On renvoie les résultats ordonnés par pertinence
ORDER BY Classement DESC |
Partager