Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete

8 réponses
Avatar
JCB
Bonjour,
j'ai sur une base ACCESS 2003 une table qui contient entre autre 10 champs
représentants des options potentielles. chaque champs peut avoir plusieurs
valeurs sachant que la valeur de chaque champs est unique pour
l'enregistrement et qu'il n'y a pas d'ordre pour les valeurs contenues. J'ai
besoin de connaitre tous les enregistrements qui ne contiennet pas une valeur
précise. J'ai donc réalisé une requette qui est du type:
SELECT * FROM TABLE WHERE LEFT([CHAMP1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R'....
Le probléme que je rencontre est le suivant :
QSi je sélectionne tous les enregistrements j'obtiens une valeur 100 par
exemple, si je sélectionne ceux dont le premier caractère d'un des dix champs
commence par 'R' j'objient une valeur 40 par concéquent je devrait obtenir
une valeur 60 à la requete qui sélectionne ceux qui ne commence pas par 'R'
et là j'obtiens une valeur X qui n'est pas la différence des deux premières
requetes!!!
Si quelqu'un a une solution elle sera la bienvenue.
Cordialement
JCB

8 réponses

Avatar
ze Titi
Bonjour JCB

Si tu nous donnais le SQL des 2 requêtes concernées, ça nous aiderait à
te dire où est l'erreur...
Ceci étant dit, je pense que pour obtenir les éléments qui ne sont pas
dans ta requête te ramenant les enregistrements commençant par 'R', tu
fais une requête te ramenant tous les enregistrements de la requête
globale sans les enregistrements de la requête précédente, ça doit
rouler...

SELECT * FROM [requeteGlobale] r WHERE r.identifiant NOT IN (SELECT
Identifiant FROM [requeteFiltree])


Dans ton message
Bonjour,
j'ai sur une base ACCESS 2003 une table qui contient entre autre 10 champs
représentants des options potentielles. chaque champs peut avoir plusieurs
valeurs sachant que la valeur de chaque champs est unique pour
l'enregistrement et qu'il n'y a pas d'ordre pour les valeurs contenues. J'ai
besoin de connaitre tous les enregistrements qui ne contiennet pas une valeur
précise. J'ai donc réalisé une requette qui est du type:
SELECT * FROM TABLE WHERE LEFT([CHAMP1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R'....
Le probléme que je rencontre est le suivant :
QSi je sélectionne tous les enregistrements j'obtiens une valeur 100 par
exemple, si je sélectionne ceux dont le premier caractère d'un des dix champs
commence par 'R' j'objient une valeur 40 par concéquent je devrait obtenir
une valeur 60 à la requete qui sélectionne ceux qui ne commence pas par 'R'
et là j'obtiens une valeur X qui n'est pas la différence des deux premières
requetes!!!
Si quelqu'un a une solution elle sera la bienvenue.
Cordialement
JCB


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
JCB
1) Requete principale :
SELECT * FROM TABLE

2) Requete Sélective AVEC
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) = 'R' OR LEFT([CHAMPS2],1) = 'R'
OR LEFT([CHAMPS3],1) = 'R' OR LEFT([CHAMPS4],1) = 'R4'....

3) Requete sélective SANS
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R' AND LEFT([CHAMPS3],1) <> 'R' AND LEFT([CHAMPS4],1) <> 'R4'....

JCB


Bonjour JCB

Si tu nous donnais le SQL des 2 requêtes concernées, ça nous aiderait à
te dire où est l'erreur...
Ceci étant dit, je pense que pour obtenir les éléments qui ne sont pas
dans ta requête te ramenant les enregistrements commençant par 'R', tu
fais une requête te ramenant tous les enregistrements de la requête
globale sans les enregistrements de la requête précédente, ça doit
rouler...

SELECT * FROM [requeteGlobale] r WHERE r.identifiant NOT IN (SELECT
Identifiant FROM [requeteFiltree])


Dans ton message
Bonjour,
j'ai sur une base ACCESS 2003 une table qui contient entre autre 10 champs
représentants des options potentielles. chaque champs peut avoir plusieurs
valeurs sachant que la valeur de chaque champs est unique pour
l'enregistrement et qu'il n'y a pas d'ordre pour les valeurs contenues. J'ai
besoin de connaitre tous les enregistrements qui ne contiennet pas une valeur
précise. J'ai donc réalisé une requette qui est du type:
SELECT * FROM TABLE WHERE LEFT([CHAMP1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R'....
Le probléme que je rencontre est le suivant :
QSi je sélectionne tous les enregistrements j'obtiens une valeur 100 par
exemple, si je sélectionne ceux dont le premier caractère d'un des dix champs
commence par 'R' j'objient une valeur 40 par concéquent je devrait obtenir
une valeur 60 à la requete qui sélectionne ceux qui ne commence pas par 'R'
et là j'obtiens une valeur X qui n'est pas la différence des deux premières
requetes!!!
Si quelqu'un a une solution elle sera la bienvenue.
Cordialement
JCB


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






Avatar
Eric
Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.

1) Requete principale :
SELECT * FROM TABLE

2) Requete Sélective AVEC
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) = 'R' OR LEFT([CHAMPS2],1) = 'R'
OR LEFT([CHAMPS3],1) = 'R' OR LEFT([CHAMPS4],1) = 'R4'....

3) Requete sélective SANS
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R' AND LEFT([CHAMPS3],1) <> 'R' AND LEFT([CHAMPS4],1) <> 'R4'....

JCB


Bonjour JCB

Si tu nous donnais le SQL des 2 requêtes concernées, ça nous aiderait à
te dire où est l'erreur...
Ceci étant dit, je pense que pour obtenir les éléments qui ne sont pas
dans ta requête te ramenant les enregistrements commençant par 'R', tu
fais une requête te ramenant tous les enregistrements de la requête
globale sans les enregistrements de la requête précédente, ça doit
rouler...

SELECT * FROM [requeteGlobale] r WHERE r.identifiant NOT IN (SELECT
Identifiant FROM [requeteFiltree])


Dans ton message
Bonjour,
j'ai sur une base ACCESS 2003 une table qui contient entre autre 10 champs
représentants des options potentielles. chaque champs peut avoir plusieurs
valeurs sachant que la valeur de chaque champs est unique pour
l'enregistrement et qu'il n'y a pas d'ordre pour les valeurs contenues. J'ai
besoin de connaitre tous les enregistrements qui ne contiennet pas une valeur
précise. J'ai donc réalisé une requette qui est du type:
SELECT * FROM TABLE WHERE LEFT([CHAMP1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R'....
Le probléme que je rencontre est le suivant :
QSi je sélectionne tous les enregistrements j'obtiens une valeur 100 par
exemple, si je sélectionne ceux dont le premier caractère d'un des dix champs
commence par 'R' j'objient une valeur 40 par concéquent je devrait obtenir
une valeur 60 à la requete qui sélectionne ceux qui ne commence pas par 'R'
et là j'obtiens une valeur X qui n'est pas la différence des deux premières
requetes!!!
Si quelqu'un a une solution elle sera la bienvenue.
Cordialement
JCB
--

Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
JCB
Merci Eric,

Je fais un test immédiatement.


Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.

1) Requete principale :
SELECT * FROM TABLE

2) Requete Sélective AVEC
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) = 'R' OR LEFT([CHAMPS2],1) = 'R'
OR LEFT([CHAMPS3],1) = 'R' OR LEFT([CHAMPS4],1) = 'R4'....

3) Requete sélective SANS
SELECT * FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R' AND LEFT([CHAMPS3],1) <> 'R' AND LEFT([CHAMPS4],1) <> 'R4'....

JCB


Bonjour JCB

Si tu nous donnais le SQL des 2 requêtes concernées, ça nous aiderait à
te dire où est l'erreur...
Ceci étant dit, je pense que pour obtenir les éléments qui ne sont pas
dans ta requête te ramenant les enregistrements commençant par 'R', tu
fais une requête te ramenant tous les enregistrements de la requête
globale sans les enregistrements de la requête précédente, ça doit
rouler...

SELECT * FROM [requeteGlobale] r WHERE r.identifiant NOT IN (SELECT
Identifiant FROM [requeteFiltree])


Dans ton message
Bonjour,
j'ai sur une base ACCESS 2003 une table qui contient entre autre 10 champs
représentants des options potentielles. chaque champs peut avoir plusieurs
valeurs sachant que la valeur de chaque champs est unique pour
l'enregistrement et qu'il n'y a pas d'ordre pour les valeurs contenues. J'ai
besoin de connaitre tous les enregistrements qui ne contiennet pas une valeur
précise. J'ai donc réalisé une requette qui est du type:
SELECT * FROM TABLE WHERE LEFT([CHAMP1],1) <> 'R' AND LEFT([CHAMPS2],1) <>
'R'....
Le probléme que je rencontre est le suivant :
QSi je sélectionne tous les enregistrements j'obtiens une valeur 100 par
exemple, si je sélectionne ceux dont le premier caractère d'un des dix champs
commence par 'R' j'objient une valeur 40 par concéquent je devrait obtenir
une valeur 60 à la requete qui sélectionne ceux qui ne commence pas par 'R'
et là j'obtiens une valeur X qui n'est pas la différence des deux premières
requetes!!!
Si quelqu'un a une solution elle sera la bienvenue.
Cordialement
JCB
--

Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Eric
re,

petite erreur de copier-coller.
Lire WHERE LEFT([CHAMPS1],1) = 'R'
au lieu de WHERE LEFT([CHAMPS1],1) <> 'R'

Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JCB
En test réel ma requete est plus compliquée et se présente comme suiot :
"SELECT DISTINCT [Code Client], [Siret], [Nom Client], [Adresse 1], [Adresse
2], [Code Postal], [Ville], [Restitution], [Client de Rattachement] FROM
BASELD WHERE [Code Parc] < '9000' AND ([Restitution] IS NULL OR [RESTITUTION]
#" & SSDateCombo1.Date & "#) AND ([CP1] LIKE 'AS%' OR [CP2] LIKE 'AS%' OR
[CP3] LIKE 'AS%' OR [CP4] LIKE 'AS%' OR [CP5] LIKE 'AS%' OR [CP6] LIKE 'AS%'

OR [CP7] LIKE 'AS%' OR [CP8] LIKE 'AS%' OR [CP9] LIKE 'AS%' OR [CP10] LIKE
'AS%') AND NOT IN (SELECT DISTINCT [Code Client], [Siret], [Nom Client],
[Adresse 1], [Adresse 2], [Code Postal], [Ville], [Restitution], [Client de
Rattachement] FROM BASELD WHERE (left([CP1],1) = 'R' OR left([CP2],1) = 'R'
OR left([CP3],1) = 'R' OR left([CP4],1) = 'R' OR left([CP5],1) = 'R' OR
left([CP6],1) = 'R' OR left([CP7],1) = 'R' OR left([CP8],1) = 'R' OR
left([CP9],1) = 'R' OR left([CP10],1) LIKE 'R') ORDER BY [Code Client]) "

à l'exécution j'ai une erreur de syntaxe opérateur absent !!!!


re,

petite erreur de copier-coller.
Lire WHERE LEFT([CHAMPS1],1) = 'R'
au lieu de WHERE LEFT([CHAMPS1],1) <> 'R'

Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Fabien
En test réel ma requete est plus compliquée et se présente comme suiot :
"SELECT DISTINCT [Code Client], [Siret], [Nom Client], [Adresse 1], [Adresse
2], [Code Postal], [Ville], [Restitution], [Client de Rattachement] FROM
BASELD WHERE [Code Parc] < '9000' AND ([Restitution] IS NULL OR [RESTITUTION]
Bonjour JCB

il me semble qu'il manque un = entre [Restitution] et #
#" & SSDateCombo1.Date & "#) AND ([CP1] LIKE 'AS%' OR [CP2] LIKE 'AS%' OR
Ou est ce une erreur de copier coller ?



[CP3] LIKE 'AS%' OR [CP4] LIKE 'AS%' OR [CP5] LIKE 'AS%' OR [CP6] LIKE 'AS%'
OR [CP7] LIKE 'AS%' OR [CP8] LIKE 'AS%' OR [CP9] LIKE 'AS%' OR [CP10] LIKE
'AS%') AND NOT IN (SELECT DISTINCT [Code Client], [Siret], [Nom Client],
[Adresse 1], [Adresse 2], [Code Postal], [Ville], [Restitution], [Client de
Rattachement] FROM BASELD WHERE (left([CP1],1) = 'R' OR left([CP2],1) = 'R'
OR left([CP3],1) = 'R' OR left([CP4],1) = 'R' OR left([CP5],1) = 'R' OR
left([CP6],1) = 'R' OR left([CP7],1) = 'R' OR left([CP8],1) = 'R' OR
left([CP9],1) = 'R' OR left([CP10],1) LIKE 'R') ORDER BY [Code Client]) "

à l'exécution j'ai une erreur de syntaxe opérateur absent !!!!


re,

petite erreur de copier-coller.
Lire WHERE LEFT([CHAMPS1],1) = 'R'
au lieu de WHERE LEFT([CHAMPS1],1) <> 'R'

Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.

--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
JCB
Merci, mais le signe est > et non =. Le signe > se confond avec les signes >
en tête de chaque ligne.

@+


En test réel ma requete est plus compliquée et se présente comme suiot :
"SELECT DISTINCT [Code Client], [Siret], [Nom Client], [Adresse 1], [Adresse
2], [Code Postal], [Ville], [Restitution], [Client de Rattachement] FROM
BASELD WHERE [Code Parc] < '9000' AND ([Restitution] IS NULL OR [RESTITUTION]
Bonjour JCB

il me semble qu'il manque un = entre [Restitution] et #
#" & SSDateCombo1.Date & "#) AND ([CP1] LIKE 'AS%' OR [CP2] LIKE 'AS%' OR
Ou est ce une erreur de copier coller ?



[CP3] LIKE 'AS%' OR [CP4] LIKE 'AS%' OR [CP5] LIKE 'AS%' OR [CP6] LIKE 'AS%'
OR [CP7] LIKE 'AS%' OR [CP8] LIKE 'AS%' OR [CP9] LIKE 'AS%' OR [CP10] LIKE
'AS%') AND NOT IN (SELECT DISTINCT [Code Client], [Siret], [Nom Client],
[Adresse 1], [Adresse 2], [Code Postal], [Ville], [Restitution], [Client de
Rattachement] FROM BASELD WHERE (left([CP1],1) = 'R' OR left([CP2],1) = 'R'
OR left([CP3],1) = 'R' OR left([CP4],1) = 'R' OR left([CP5],1) = 'R' OR
left([CP6],1) = 'R' OR left([CP7],1) = 'R' OR left([CP8],1) = 'R' OR
left([CP9],1) = 'R' OR left([CP10],1) LIKE 'R') ORDER BY [Code Client]) "

à l'exécution j'ai une erreur de syntaxe opérateur absent !!!!


re,

petite erreur de copier-coller.
Lire WHERE LEFT([CHAMPS1],1) = 'R'
au lieu de WHERE LEFT([CHAMPS1],1) <> 'R'

Bonjour,

Ton sql doit être du genre:
SELECT * FROM TABLE
WHERE Identifiant Not IN
(SELECT Identifiant FROM TABLE WHERE LEFT([CHAMPS1],1) <> 'R' OR
LEFT([CHAMPS2],1) = 'R' OR LEFT([CHAMPS3],1) = 'R' ...)

où Identifiant est la clé primaire de TABLE.

--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr