Select Distinct sur une colonne

Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
- - Dernière réponse : originalcompo
Messages postés
65
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
9 octobre 2007
- 2 juil. 2005 à 23:04
Bonjour,

Je veux récupérer une liste d'utilisateur dans une table utilisateur. (id, nom, prénom, email)
L'application qui alimente la table ne prend pas en compte l'unicité des adresses email et les utilisateurs peuvent donc s'inscrire plusieurs fois avec le même mail
Le résultat de ma requète ne doit pas contenir de doublons au niveau des emails, les champs importent peu.

Alors je me suis dis que la réquete suivante allait marcher

SELECT DISTINCT user_id, user_lastname, user_fisrtname, user_email FROM users

Malheureusement j'ai toujours des doublons dans les mails

De même qu'avec

SELECT DISTINCT user_id, user_lastname, user_fisrtname, user_email
FROM users
WHERE user_email IN
( SELECT DISTINCT user_email FROM users )

et je me rend compte maintenant que c'est débile !!!, j'ai toujours des doublons

Quelqu'un a une idée ?

Merci

Nico
Afficher la suite 

4 réponses

Messages postés
83
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
10 février 2006
0
Merci
Essaye avec ça :

SELECT DISTINCT user_email, user_lastname, user_fisrtname, user_id FROM users

"Celui qui brise une chose pour découvrir ce que c'est a quitté le chemin de la sagesse"
Commenter la réponse de cs_Isengard
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
0
Merci
Je ne vois par l'intérêt car le distinct c'est sur la ligne non ?

Bon bah après test (c'est pas mieux...) !


Tant que personne n'a d'idée, je vais tenter avec un jointure
Genre un select distinct email sur user, puis une jointure pour extraire les autres colonnes

Pis je mets la réponse ici



Nico
Commenter la réponse de thiosyiasar
Messages postés
65
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
9 octobre 2007
0
Merci
Si la base de donnée est Oracle, j'ai une solution ici:

http://originalcompo.free.fr

rubrique "TUTORIAUX"
sous-rubrique: "Astuces diverses pour bases de données et langage SQL"
C'est la 5ieme astuce

Si c'est pas Oracle, pas la peine de regarder parceque j'utilise rownum.

En tout cas, ca a ete galere pour moi de trouver la solution... m'a bien fallu une demi journée pour trouver la reponse a l'epoque

Bonne chance

http://originalcompo.free.fr
Commenter la réponse de originalcompo
Messages postés
65
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
9 octobre 2007
0
Merci
Sinon, en regardant une de mes autres astuces, je viens d'avoir une idée, à condition que ta base accepte les champs auto-incrementes et que tu soit près à en rajouter un, je pense que cette requète peut marcher:

1) rajouter une colonne auto incrémentée TEMP à ta table T1

2) faire:


select * from T1
where TEMP in (select min(I.TEMP)
from T1 I
where I.MAIL=T1.MAIL
):


A+

http://originalcompo.free.fr
Commenter la réponse de originalcompo