Version: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0

Bonjour,

J'ai un drole de résultat à l'execution de la requète suivante:
Il ne me retourne pas de tuple, mais lorsque je mets un LIKE à la place du signe = au niveau de la comparaison des postes , cela fonctionne.

Cela fonctionne avec le signe = dans les conditions suivantes :
Si on met en commentaire une des 2 requetes de l'union ou si on fait assign.m_post_id = po.post_id(+)
Le type de post_id est identique dans toutes les table, c'est du number(6).

Comment cela se fait-il?

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
SELECT po.* 
    FROM P_BREAK_PERIODS bp
   , P_PERSONS pe
   , (SELECT a.start_date
	       , a.end_date 
	       , a.m_post_id 
		   , a.person_id 
	  FROM P_ASSIGNMENTS a
	  WHERE a.sequence <> 99999
	  UNION
	  SELECT c.start_date  
		   , c.end_date
		   , c.m_post_id 
		   , c.person_id
      FROM P_CONTRACTS c) assign
   , M_POSTES po
   , P_ABSENCE_TYPES a
 WHERE pe.person_id = bp.person_id
   AND pe.person_id = assign.person_id
   AND assign.m_post_id = po.post_id
   AND TRUNC(NVL(bp.end_date,SYSDATE)) >= TRUNC(assign.start_date)
   AND TRUNC(bp.start_date) <= TRUNC(NVL(assign.end_date,SYSDATE))
   AND bp.absence_tp_id = a.absence_tp_id(+)