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

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

24 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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
0
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008
14 août 2006 à 22:11
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
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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.
0
pymaster Messages postés 74 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 14 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pymaster Messages postés 74 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 14 août 2006
14 août 2006 à 23:59
Pardon .. mal lu le problème .. je retire mon intervension et je vais me prendre un café ^_^

PY
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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 ?!!!
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
15 août 2006 à 00:05
Pardon pymaster .
Je vois que tu as réctifié de toi-même.
C' est que j' ai posté après toi .
Excuses.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
15 août 2006 à 00:07
n' empêche !
vas prendre ton café.
Serré s' il te plait ! Et pas un décaféiné.
0
SamirAloui Messages postés 53 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 20 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
0
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 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.

merci

azt
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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.
0
SamirAloui Messages postés 53 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 20 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
0
SamirAloui Messages postés 53 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 20 mars 2008
15 août 2006 à 01:51
Desolé monsieur Chaiba mais je suis englo plus que froncophone, désolé encore pour lortographe, But try to understand the meaning, Salam
0
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008
15 août 2006 à 01:53
ok merci,


Je vais essayer ça lorsque je pourrai.


a+

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


 


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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.

En tout cas ça marche pour moi,

A+
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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.
0
SamirAloui Messages postés 53 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 20 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
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
16 août 2006 à 01:37
@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.
0
Rejoignez-nous