Between sur des date vides
Bonjour,
Je dois effectuer une requête qui me récupère un contrat suivant une date. Cette date doit être comprise soit entre la date_effet_crt et date_fin_crt OU la date_effet_tech et la date_fin_tech (ces deux dates appartiennent à la table des intervenants) et tout cela par rapport à un nm_identif que je récupère avant.
Voici ma requête, j'ai essayé plusieurs méthodes mais sans succès... :(
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
SELECT DISTINCT F_CRT_CONTRAT.NM_CODI_CONTRAT, PERSONNE.NOM, PERSONNE.PRENOM, ADRESSE, CODE_POSTAL, VILLE, IBAN, ADRESSE_BANCAIRE, CH_TITULAIRE
FROM F_CRT_CONTRAT, F_CRT_INTERVENANT, PERSONNE, F_CRT_ASSURE_BENEFICIAIRE
LEFT OUTER JOIN ADR_POST ON (F_CRT_ASSURE_BENEFICIAIRE.NM_IDENTIF_ASSURE = ADR_POST.NM_IDENTIF_PERSONNE)
LEFT OUTER JOIN ADR_BAN ON (F_CRT_ASSURE_BENEFICIAIRE.NM_IDENTIF_ASSURE = ADR_BAN.NM_IDENTIF_PERSONNE)
WHERE F_CRT_CONTRAT.NM_CODI_CONTRAT = F_CRT_INTERVENANT.NM_CODI_CONTRAT
AND F_CRT_INTERVENANT.NM_IDENTIF = F_CRT_ASSURE_BENEFICIAIRE.NM_IDENTIF_ASSURE
AND F_CRT_ASSURE_BENEFICIAIRE.NM_IDENTIF_BENEFICIAIRE = PERSONNE.NM_IDENTIF_PERSONNE
AND NM_STATUT_CRT = 1
AND (NM_CODI_PRODUIT = 4 OR NM_CODI_PRODUIT = 5)
AND ('13/04/2014' BETWEEN F_CRT_INTERVENANT.DT_EFFET_TECH AND F_CRT_INTERVENANT.DT_FIN_TECH
OR '13/04/2014' BETWEEN F_CRT_CONTRAT.DT_EFFET_CRT AND F_CRT_CONTRAT.DT_FIN_CRT)
AND PERSONNE.NM_IDENTIF_PERSONNE = '1170824'
; |
Le problème est que dans la table F_CRT_CONTRAT la date de fin est souvent remplie à 31/12/999 et dans F_CRT_INTERVENANT quand un contrat n'est pas terminé la DT_FIN_TECH est vide donc mon between ne s'effectue pas...
J'espère avoir été clair?
Merci