Enlever les doublons a l'aide d'une requete access

Signaler
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
 gdcharente -
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

24 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008

Merci pour ton aide chaibat05 mais ca ne semble pas fonctionner.

Mon probleme peut-il venir du fait que j'ai 2 First sur 2 colonnes différentes?

Merci

azt
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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.
Messages postés
74
Date d'inscription
vendredi 14 juillet 2006
Statut
Membre
Dernière intervention
14 août 2006

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
Messages postés
74
Date d'inscription
vendredi 14 juillet 2006
Statut
Membre
Dernière intervention
14 août 2006

Pardon .. mal lu le problème .. je retire mon intervension et je vais me prendre un café ^_^

PY
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@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 ?!!!
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Pardon pymaster .
Je vois que tu as réctifié de toi-même.
C' est que j' ai posté après toi .
Excuses.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
n' empêche !
vas prendre ton café.
Serré s' il te plait ! Et pas un décaféiné.
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

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
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008

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.

merci

azt
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@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.
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

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
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

Desolé monsieur Chaiba mais je suis englo plus que froncophone, désolé encore pour lortographe, But try to understand the meaning, Salam
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008

ok merci,


Je vais essayer ça lorsque je pourrai.


a+

azt
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@SamirAlaoui
J' ai essayé mais je n' y suis pas arrivé, tant tes idées étaient "imbriquées"
l' incident est clos.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@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és
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@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.

En tout cas ça marche pour moi,

A+
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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.
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

@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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@SamirAlaoui,
Je salue ton courage et ta droiture.
"Faute avouée, à moitié pardonnée"
 Pour ma part  j' ai tout pardonnée.
 
 Bonne soirée à tous

 chaibat05.