Requete

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6297511
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

JCB
Le #6297491
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






Eric
Le #6297461
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



JCB
Le #6297451
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






Eric
Le #6297441
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

JCB
Le #6296721
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




Fabien
Le #6296711
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






JCB
Le #6296701
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









Publicité
Poster une réponse
Anonyme