Enlever les doublons a l'aide d'une requete access
aztcaLISS
Messages postés91Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention25 avril 2008
-
14 août 2006 à 21:18
gdcharente -
17 nov. 2012 à 19:33
Salut,
Je suis sous access et je veux faire une requete.
Je ne sais pas trop comment faire.
Ce que je veux c'est de faire une requete qui permet d'eliminer les doublons d'un des champs.
par exemple on a la table suivante:
Colonne1 Colonne2 Colonne3 A1 a x
A1 b y
A1 c z
B1 a x
avec la requete on obtiendrai ceci:
Colonne1 Colonne2 Colonne3 A1 a x
B1 a x
Ce que ca soit faire, c'est de completement enlever les lignes pour lequels on a des doublons dans la Colonne1.
J'ai essayé ceci avec GROUP BY:
SELECT Table.Colonne1, First(Table.Colonne2) AS FirstOfColonne2, First(Table.Colonne3) AS FirstOfColonne3
FROM ACL
GROUP BY Table.Colonne1
Ca ne fonctionne pas, des fois il me manque des elements.
Est-ce possible de faire ce que je veux?? Comment faire??
merci
azt
A voir également:
Enlever les doublons a l'aide d'une requete access
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 14 août 2006 à 21:50
Bonsoir,
Ton raisonnement est bon en ce qui concerne GROUP BY:
sauf que pour les éléments manquants celà vient du fait que
pour certaines colonnes il ne trouve pas de valeur et donc pas de First.
Essaies:
SELECT Table.Colonne1, First(IIF(IsNull(Table.Colonne2),"",Table.Colonne2)) AS FirstOfColonne2 ..............
FROM ACL
GROUP BY Table.Colonne1
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 14 août 2006 à 22:31
Re bonsoir,
Il n' y ' a pas de raison.Tu peux avoir 10 First avec 10 colonnes différentes.
Je te propose donc de commencer par remplacer les valeurs Nulles par un caractère quelconque. Ensuite tu lance la requête que tu as fait toi. (celle que tu nous a communiqué) .Tu verras alors si le prolème vient des colonnes vides.
Sinon essaies une autre approche
Bon courage.
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 14 août 2006 à 23:51
Bonjour !
En fait ton groupBy ne fonctionnera pas puisque ta colonne 1 dans ton résultat est différent pour chaque ligne A1 <> B1. Donc il ne peux pas les grouper.
PY
Vous n’avez pas trouvé la réponse que vous recherchez ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 août 2006 à 00:02
@pymaster
GROUP BY groupera toutes les lignes A1 en une seule ligne,
toutes les lignes B1 en une seule ligne
et ainsi de suite
c' est ce à qoui sert GROUP BY.
Si toutes les lignes étaient identiques , à quoi bon ?!!!
SamirAloui
Messages postés53Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention20 mars 2008 15 août 2006 à 00:55
Salu tt le monde
j'ai pas de reponse et je trouve ça un peut délicat, Il faut peut etre utiliser des fonction sous VBA (c'est integrée dans acces)
ensuite j qq chose à dire a Monsieur Chaibat05:
je vois que tu n'a rien avec les BDs ni avec ce question parceque tu a mal répondu, aussi il faut connaitre qu' il n y a desenregistrements identique dans le même table de BD et ça c'est une regle les base relationnelles
Aussi il n'y a pas un pbm de nulle ici
je te conseil de :
- Bien analyser le pbm
- Tester le resultat chez toi d'abord (tu a Acces q meme)
A bien tot
aztcaLISS
Messages postés91Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention25 avril 2008 15 août 2006 à 01:27
Salut,
Je voudrais savoir s'il est possible de faire une requête sur une requête. Si c'est possible je crois que je peux résoudre le problême avec ça. Malheureusement je n'ai pas access ici. Il va donc falloir que j'essais plus tard.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 août 2006 à 01:47
@SamirAlaoui,
S' il ya quelque chose que je n' ai pas compris , ce sont tes remarques.
Reformules les s' il te palît, et cette fois, avec moins de fautes d' orthographe
si c' est possible ! Sinon je ferai avec.
Bonne soirée.
SamirAloui
Messages postés53Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention20 mars 2008 15 août 2006 à 01:49
Oui tu peut imbrequer les requette de type :
1 - SELECT .........
FROM [REQUETE(1)<gras>REQUETE(2)<gras>REQUETE(N)]
WHERECONDITION DE JOINTURE INTER-REQUETE /* de FROM */
AND (arg OPERATION [REQUETEOPERATION [<gras>REQUETE] .........)
ORDER BY champ(1),champ(2),........ ,champ(n)
GROUP BY champ(1),champ(2),......,champ(n)
HAVING arg OPERATION [REQUTE]
tel que Operation={<, >, <>,=, IN ,....etc}
mais j'ai essai sa pour tois , malheureusement j n arrive pas à un solution
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 août 2006 à 04:15
@SamirAlaoui
J' ai quelque chose à rajouter.
1° On n' entre pas dans un débat avec
"je n' ai rien à proposer...."
Quand on n' a rien on se tait !
2° Quand on arrive sur un débat on ne se contente pas d' un bout de réponse.
On relie tout depuis le début pour savoir qui a dit quoi.
3° On ne s' adresse pas au gens qu' on ne connait pas avec :
"Tu ne connais rien à ça ...."
Un minimum de respect est requis
4° On ne propose pas quelque chose qu' on a testé soit même
et qu' on sait pertinement qu' elle ne marche pas.
genre (et je te cite) "mais j'ai essai sa pour tois , malheureusement j n arrive pas
à un solution"
5° On ne se contente pas d' un Copier/Coller.
Tout le monde a l' Aide Access.
S' il s' avère necessaire, on n' y apporte quelque chose de personnelle
6° Avec ça tu m' a coupé l' envie de continuer ce soir.
Je me déconnecte pour le moment en espèrant ne plus te croiser.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 août 2006 à 07:34
@aztcaLISS
On a peut être tous fait fausse route avec GROUP BY.
Je crois qu' il suffiait tout simplement utiliser First pour toutes les colonnes.
On aura alors
"SELECT First(Table.Colonne1) AS PremierDeColonne1, First(Table.Colonne2) AS PremierDeColonne2, First(Table.Colonne3) AS PremierDeColonne3
FROM ACL;".
Essaies juste pour voir.Si ça marche pas encore, continues ce que
tu envisageais de faire, et fait nous part du résultat.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 15 août 2006 à 08:51
Oups ! J' ai dit une connerie ?
Désolé.
Je retire mon dernier post.
Ignorer le...
Détruiser le...
Bruler le...
Abort.Echec......Dont Retry....
Et voilà ce qui arrive quand on perd son sang froid !
Que la nuit était fatigante !
Je me retire pour cette fois.
Bon courage tout le monde.
SamirAloui
Messages postés53Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention20 mars 2008 15 août 2006 à 18:43
@Monsieur Chaibat05
Bonjour;
tout d'abord je te demande de m'excuser si je te fait un mal sans faire attention. mais (Belive me) je ne vous que te demande de consontrer parceque je vu que tu va loin
En tous cas j'espere que j'utilise des mots sans connaitre bien ces symantique
je te demande de pardoner
Remarque:
Le Dieu connais que je ne veut pas toucher n'importe qui parceque je supose que tous les membre de VBFrance sont mes amis et mes freres.
une autre remarque:
Dieu connait que j'ai jamais utiliser un aide (soit de Access, soit de VB soit un site) pour rependre à un question. Seulement j'ecrit se que je connait, mais j'aime boucoups la coloration. elle aide mois, même les autres à bien comprendre (je fait mes possible pour aider)
finalement, que le Dieux te protege pour VBFrance