Bonjour,
Quelqu'un peut-t-il me dire si ces deux requêtes sont-t-ils équivalents:

l'explication est en bas de la page:
les requêtes sont sous ORACLE
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
	create table TABLE_MAITRE  Select
				a.*
		from
		SCHEMA.TABLE_MAITRE a 			/*REQUETE 1*/
 
		INNER JOIN 
 
		(Select * from SCHEMA.TABLE_2 CLP 
				where	CARAC_LIBRE = 'VALEUR' /*Filtre 1*/
				and nvl(date_fin_effet,'31/12/9999') >sysdate and 
					num_col = (select max(CLP2.num_col) 
										from SCHEMA.TABLE_2 CLP2 
										where CLP2.num_personne = CLP.num_personne			/*REQUETE 2*/
										and CLP2.DATE_DEBUT = CLP.DATE_DEBUT
									)
 
		) cl
		On a.num_personne = cl.num_personne 
 
 
		Inner Join
		(Select distinct num_personne
			from SCHEMA.TABLE_MAITRE DMA 
			inner join 	SCHEMA.TABLE_3 
			on (TRIM (DMA.GAR_TECH) =TRIM(TABLE_3.GAR_TECH)) 					/*REQUETE 3*/
			where DATE_ADHE<= sysdate /*FILTRE 2*/
			and(DATE_FIN is null or DATE_FIN > SYSDATE) 
			and TABLE_3.TYPE in ('SANTE_0', 'SANTE_1','SANTE_2') 	
		) Per 
		On Per.num_personne = a.num_personne
 
 
		where DATE_ADHE<= sysdate and (a.DATE_FIN is null or a.DATE_FIN >SYSDATE) /*FILTRE MAITRE*/
		and TYPE_ASSURE = 'VALEUR_1' 
 
 
 
 
	create table TABLE_MAITRE  Select
				a.*
		from
		SCHEMA.TABLE_MAITRE a 			/*REQUETE 1*/
 
		INNER JOIN 
 
		(Select * from SCHEMA.TABLE_2 CLP 
				where	CARAC_LIBRE = 'VALEUR' /*Filtre 1*/
				and nvl(date_fin_effet,'31/12/9999') >sysdate and 
					num_col = (select max(CLP2.num_col) 
										from SCHEMA.TABLE_2 CLP2 
										where CLP2.num_personne = CLP.num_personne			/*REQUETE 2*/
										and CLP2.DATE_DEBUT = CLP.DATE_DEBUT
									)
 
		) cl
		On a.num_personne = cl.num_personne 
 
 
		where DATE_ADHE<= sysdate and (a.DATE_FIN is null or a.DATE_FIN >SYSDATE) /*FILTRE MAITRE*/
		and TYPE_ASSURE = 'VALEUR_1'
and a.gar_tech in (liste_garantie_obtenu_avec_filtre_TABLE_3.TYPE in ('SANTE_0', 'SANTE_1','SANTE_2') )
en effet, j'ai supprimé la requête 3 du premier programme pour le remplacer par le filtre qui nous permet d'avoir les garanties relatives au filtre 'SANTE_0', 'SANTE_1','SANTE_2' ,
Un collègue me dit que les requêtes ne sont pas équivalente, mais pour moi comme je récupère le numéro de personne qui est déjà dans la requête 1.
Si besoinde plus d'éclaircissement, n'hésitez pas.
Cordialement.