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(+)
Partager