Rechercher : dans
Par :

Requête SQL - Remplacer NULL

Dernière réponse le 29 fév 2008 à 19:51:06 FrAnKiBoY, le 29 fév 2008 à 17:09:26 
 Signaler ce message aux modérateurs

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]);

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Requête SQL Remplacer NULL » dans :
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...

1

Xil, le 29 fév 2008 à 17:16:39

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.

Répondre à Xil

2

FrAnKiBoY, le 29 fév 2008 à 17:22:44

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.

Répondre à FrAnKiBoY

3

Xil, le 29 fév 2008 à 18:17:45

Ca doit être possible de le mettre dans le WHERE, je n'ai pas tester, mais tu peux faire le test et nous dire ;)

Répondre à Xil

4

 FrAnKiBoY, le 29 fév 2008 à 19:51:06

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]);

Répondre à FrAnKiBoY