Bonjour,

je dispose de deux vues crées avec les requêtes suivantes

Vue InterPlanning
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
drop view InterPlanning;
go
 
CREATE VIEW InterPlanning AS
SELECT planning.IdIntervention,
planning.IdSalarie,
sal.Nom as NomSalarie,
sal.Prenom as PrenomSalarie,
planning.IdPA,
personne.Nom,
personne.Prenom,
personne.Adressel,
personne.Adressel2,
personne.CodePostall,
personne.Villel,
personne.Telephonel1,
planning.CodeActivite,
activite.Libelle,
planning.DateDebutReelle,
planning.HeureDebutReelle,
planning.DateFinReelle,
planning.HeureFinReelle,
planning.DateDebut,
planning.DateFin,
planning.HeureDebut,
planning.HeureFin,
planning.DateAnnuler,
planning.CodeAsso,
planning.DateSuppr
from Salarie sal, PL_Activite activite,PL_Planning planning
left outer join PA personne
on personne.CodeEmployeur = planning.IdPA
and personne.CodeAssociation = planning.CodeAsso
where planning.DateAnnuler='1901-01-01 00:00:00.000'
and planning.DateSuppr='1901-01-01 00:00:00.000'
and planning.IdSalarie = sal.CodeCandidat
and planning.CodeAsso=sal.CodeAssociation
and planning.CodeActivite = activite.CodeActivite
go
Vue TelephoneActive
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
drop view TelephoneActive;
go
 
CREATE VIEW TelephoneActive AS
SELECT tel.IMEI,
tel.ID_TG_Telephone,
telAut.dateDebut,
telAut.dateFin,
telAut.codeSalarie,
telAut.codeAssociation
FROM eliad.dbo.TG_Telephone tel,TG_TelephoneAutorisation telAut
where telAut.dateDebut <= GETDATE()
and telAut.dateFin>=GETDATE()
and telAut.ID_TG_Telephone=tel.ID_TG_Telephone;
go
pour récupérer les intervention faites par une personne j'exécute cette requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Select *
from InterPlanning
where IdSalarie=(select codeSalarie from TelephoneActive where IMEI='354956052024481')
and DATEPART(m, DateDebutReelle) = DATEPART(m, getdate())
and DATEPART(yy, DateDebutReelle) = DATEPART(yy,getdate());
elle s'exécute quasiment instantanément , mais le problème c'est que j'aimerais bien filtrer également sur la DateDébutRéelle en utilisant les champs DateDébut et DateFin dans la vue TelephoneActive
Peut on récupérer plusieurs variables dans ma requête imbriquée ? si non y a t il un autre moyen de faire

car j'ai fait une autre requête en mettant les deux vues dans le from mais j'ai peur que ça mette trop de temps à s'exécuter car ce n'est plus instantané avec cette autre requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Select *
from InterPlanning planning,TelephoneActive tel
where DATEPART(m, DateDebutReelle) = DATEPART(m, getdate())
and DATEPART(yy, DateDebutReelle) = DATEPART(yy,getdate())
and planning.DateDebutReelle>=tel.dateDebut
and planning.DateDebutReelle<=tel.dateFin
and planning.IdSalarie=tel.codeSalarie
and tel.IMEI='354956052024481';
s'il n'y a pas d'autre moyens , dois je utiliser une procédure stockée ou une fonction pour retourner mes valeurs ? devrais utiliser des curseurs dans cette fonction pour renvoyer mes valeurs ?

merci par avance pou vos réponses et si je n'ai pas été assez clair, n'hésitez pas à me demander plus de détails