NULL mal comptés ?

Le
Vincent Lascaux
Bonjour,

J'ai besoin de faire des requêtes qui utilisent des champs "NULL". Les
requetes sont simples : elles ne concernent qu'une seule table (Contact) qui
possède un champ "N°" de type NuméroAuto, un champ "Name", un champ
"IDCompany", et quelques autres champs dont je ne me sers pas dans cette
requête. Voilà ce que je fais :
SELECT Count(*) As Nb FROM Contact WHERE Name=NULL AND IDCompany = 233; (233
parceque 233, je vous en pose des questions moi ? ;-))

Access me retourne systématiquement 0, alors que je sais qu'il y a des
entrées qui correspondent. Pour m'en convaincre (surtout pour etre sur que
les noms n'ont pas comme valeur espace, ou quelque chose comme ca), j'ai
executé cette requete :
INSERT INTO Contact (Name, IDCompany) VALUES (NULL, 233)
Ce qui m'a créé une ligne toute vide avec N° = 440 et IDCompany = 233. La
requête me retourne toujours 0.

Quelle est la raison de mon problème ?

Merci

--
Vincent
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #5372871
Bonjour.

SELECT Count(*) As Nb FROM Contact WHERE Name=NULL AND IDCompany = 233;
essaie ceci:
SELECT Count(*) As Nb FROM Contact
WHERE (Contact .monchamp Is Null) AND (Contact .IDCompany #3);

name est un mot réservé access.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Vincent Lascaux" news:40962be2$0$27684$
Bonjour,

J'ai besoin de faire des requêtes qui utilisent des champs "NULL". Les
requetes sont simples : elles ne concernent qu'une seule table (Contact)
qui

possède un champ "N°" de type NuméroAuto, un champ "Name", un champ
"IDCompany", et quelques autres champs dont je ne me sers pas dans cette
requête. Voilà ce que je fais :
SELECT Count(*) As Nb FROM Contact WHERE Name=NULL AND IDCompany = 233;
(233

parceque 233, je vous en pose des questions moi ? ;-))

Access me retourne systématiquement 0, alors que je sais qu'il y a des
entrées qui correspondent. Pour m'en convaincre (surtout pour etre sur que
les noms n'ont pas comme valeur espace, ou quelque chose comme ca), j'ai
executé cette requete :
INSERT INTO Contact (Name, IDCompany) VALUES (NULL, 233)
Ce qui m'a créé une ligne toute vide avec N° = 440 et IDCompany = 233. La
requête me retourne toujours 0.

Quelle est la raison de mon problème ?

Merci

--
Vincent




Fred BROUARD
Le #5372271
NULL n'est pas une veleur... c'est jsutement l'absence de valeur. NULL est
donc un marqueur. En conséquence un filtre toto = NULL n'a pas de sens.
Il faut utiliser des opérateurs spéciaux pour traiter les NULL.
Dans ton cas, IS NULL est la solution :

SELECT COUNT(*) AS Nb
FROM Contact
WHERE Name IS NULL
AND IDCompany = 233

A +


--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


Vincent Lascaux a écrit:
Bonjour,

J'ai besoin de faire des requêtes qui utilisent des champs "NULL". Les
requetes sont simples : elles ne concernent qu'une seule table (Contact) qui
possède un champ "N°" de type NuméroAuto, un champ "Name", un champ
"IDCompany", et quelques autres champs dont je ne me sers pas dans cette
requête. Voilà ce que je fais :
SELECT Count(*) As Nb FROM Contact WHERE Name=NULL AND IDCompany = 233; (233
parceque 233, je vous en pose des questions moi ? ;-))

Access me retourne systématiquement 0, alors que je sais qu'il y a des
entrées qui correspondent. Pour m'en convaincre (surtout pour etre sur que
les noms n'ont pas comme valeur espace, ou quelque chose comme ca), j'ai
executé cette requete :
INSERT INTO Contact (Name, IDCompany) VALUES (NULL, 233)
Ce qui m'a créé une ligne toute vide avec N° = 440 et IDCompany = 233. La
requête me retourne toujours 0.

Quelle est la raison de mon problème ?

Merci



Publicité
Poster une réponse
Anonyme