Salut à toutes et à tous,
Je cherche à créer une requête en PostgreSQL qui liste les éléments d'une autre requête (une vue) pour lesquels le champs d'une table jointe est null.
J'ai écris ceci :
Or cette requête fonctionne mais ne retourne aucun élément.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT "TblSecteurs_ID" FROM "SecteursInadmissibles" JOIN "TblSecteurs" ON "TblSecteurs_ID" = "SecteursInadmissibles_SecteurID" GROUP BY "TblSecteurs_ID" HAVING "TblSecteurs_JustificationNonAdmissible" = NULL ORDER BY "TblSecteurs_ID"
J'ai vérifié directement dans les tables, et il existe bien des éléments dans la vue source dont "TblSecteurs_JustificationNonAdmissible" = NULL
D'ailleurs si je teste la requête sans le HAVING, il me retourne une liste dont plusieurs éléments de "TblSecteurs_JustificationNonAdmissible" sont vides.
Me disant que tout cela n'est peut-être pas si null que ça, j'ai écris :
Or ici il me met bien 'NULL' dans les champs qui étaient vides. Ce coalesce qui me met des 'NULL' dans les champs me fait bien penser que ces champs sont effectivement à NULL, sinon leur contenu (vide donc null) n'aurait pas été remplacé par le texte 'NULL'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT "TblSecteurs_ID", coalesce ("TblSecteurs_JustificationNonAdmissible",'NULL') FROM "SecteursInadmissibles" JOIN "TblSecteurs" ON "TblSecteurs_ID" = "SecteursInadmissibles_SecteurID" GROUP BY "TblSecteurs_ID", "TblSecteurs_JustificationNonAdmissible" ORDER BY "TblSecteurs_ID"
Dès lors, pourquoi la même requête ne ressort-elle plus rien aussi tôt que je remet la clause HAVING "TblSecteurs_JustificationNonAdmissible" = NULL ?
Le champs "TblSecteurs_JustificationNonAdmissible" est un champs Text pour lequel l'option "Not NULL" n'est pas cochée et pour lequel la valeur par défaut est vide.
Merci de vos z'avis z'avisés,
Jean-Marc
Partager