Requête SQL - Remplacer NULL

FrAnKiBoY -  
 FrAnKiBoY -
Bonjour, je recherche une facon de remplacer une valeur null en date.
Bref, mon problème est que je doit vérifier une date entre deux autres mais c'est pour des contrats et il arrive des fois où le contrat n'a pas de date de fin donc il est à null. J'aimerais si c'est possible être capable de faire mon beetween pareil mais avec une date bidon genre 9999-01-01 à place que ma requête me retourne rien car il trouve un null dans la datede fu. Merci

Voici ma requête présentement :

SELECT CONTRAT.NOM_DEPARTEMENT, EMPLOYE.NOM, EMPLOYE.PRENOM, AFF_EMP_CLASS.CODE_CLASSEMENT, BANQUE_VACANCE.VALEUR, SALAIRE.TAUX_HORAIRE
FROM (((EMPLOYE INNER JOIN AFF_EMP_CLASS ON EMPLOYE.NO_EMPLOYE=AFF_EMP_CLASS.NO_EMPLOYE) INNER JOIN BANQUE_VACANCE ON EMPLOYE.NO_EMPLOYE=BANQUE_VACANCE.NO_EMPLOYE) INNER JOIN CONTRAT ON EMPLOYE.NO_EMPLOYE=CONTRAT.NO_EMPLOYE) INNER JOIN SALAIRE ON EMPLOYE.NO_EMPLOYE=SALAIRE.NO_EMPLOYE
WHERE ([DATE_JOUR] BETWEEN (AFF_EMP_CLASS.DATE_DEBUT) AND (AFF_EMP_CLASS.DATE_FIN)) AND ([DATE_JOUR] BETWEEN (CONTRAT.DATE_DEBUT) AND (CONTRAT.DATE_FIN)) AND ([DATE_JOUR] BETWEEN (SALAIRE.DATE_DEBUT) AND (SALAIRE.DATE_FIN)) AND ([DATE_JOUR] BETWEEN (BANQUE_VACANCE.DATE_DEBUT) AND (BANQUE_VACANCE.DATE_FIN)) AND ((EMPLOYE.NO_EMPLOYE)=[NO_DE_EMPLOYE]);
A voir également:

2 réponses

Xil Messages postés 351 Statut Membre 257
 
Je suis pas sûr d'avoir compris...

J'aimerais si c'est possible être capable de faire mon beetween pareil mais avec une date bidon genre 9999-01-01 à place que ma requête me retourne rien car il trouve un null dans la datede fu.

Tu veux que ta valeur de retour soit défini à une date par défaut si sa valeur est NULL ?

Si c'est le cas, tu as la fonction SQL "IFNULL" (ou ISNULL pour MSSQL) à utiliser comme suit :
SELECT IFNULL(nom_champ, 'valeur_de_remplacement_si_NULL') FROM nom_table;

Ca a pour effet de remplacer les valeur NULL par une valeur par défaut définie lors du retour des données

http://www.smallsql.de/doc/sql-functions/system/ifnull.html

Mais ta requête ne renvois pas la date, et donc ne te renvois pas de valeur NULL pour la date... C'est pour ça que jesuis pas sûr d'avoir compris.
-1
FrAnKiBoY
 
Est-ce que je peut utiliser cette fonction ailleur que dans le select car moi c'Est pas ma date que je veut retourner

C,est que dans ma bd jai un contrat et datedebut = ex : 2007-02-02 et la dateFin = null car son contrat n'a pas de date de fin de spécifier dont lorsque je fait mon select et que j'ai pas de date de fin il fait between 2007-02-02 et null donc il retourne rien mais si par exemple je reusiss a changer le null pour ma requette bin sa va faire between 2007-02-02 et 9999-01-01 et il va me resortir le contrat actuel.
0
Xil Messages postés 351 Statut Membre 257
 
Ca doit être possible de le mettre dans le WHERE, je n'ai pas tester, mais tu peux faire le test et nous dire ;)
-1
FrAnKiBoY
 
J'ai trouvé on doit utiliser NZ avec accès et j'ai fait cela

SELECT CONTRAT.NOM_DEPARTEMENT, EMPLOYE.NOM, EMPLOYE.PRENOM,
AFF_EMP_CLASS.CODE_CLASSEMENT, BANQUE_VACANCE.VALEUR, SALAIRE.TAUX_HORAIRE
FROM (((EMPLOYE INNER JOIN AFF_EMP_CLASS ON EMPLOYE.NO_EMPLOYE=AFF_EMP_CLASS.NO_EMPLOYE)
INNER JOIN BANQUE_VACANCE ON EMPLOYE.NO_EMPLOYE=BANQUE_VACANCE.NO_EMPLOYE)
INNER JOIN CONTRAT ON EMPLOYE.NO_EMPLOYE=CONTRAT.NO_EMPLOYE)
INNER JOIN SALAIRE ON EMPLOYE.NO_EMPLOYE=SALAIRE.NO_EMPLOYE
WHERE ([DATE_JOUR] BETWEEN (AFF_EMP_CLASS.DATE_DEBUT) AND NZ(AFF_EMP_CLASS.DATE_FIN,#01/01/9999#))
AND ([DATE_JOUR] BETWEEN (CONTRAT.DATE_DEBUT) AND NZ(CONTRAT.DATE_FIN,#01/01/9999#))
AND ([DATE_JOUR] BETWEEN (SALAIRE.DATE_DEBUT) AND NZ(SALAIRE.DATE_FIN,#01/01/9999#))
AND ([DATE_JOUR] BETWEEN (BANQUE_VACANCE.DATE_DEBUT) AND NZ(BANQUE_VACANCE.DATE_FIN,#01/01/9999#))
AND ((EMPLOYE.NO_EMPLOYE)=[NO_DE_EMPLOYE]);
0