Requete SQL

cs_Michele Messages postés 25 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 juin 2006 - 10 juin 2006 à 08:31
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 17 juin 2006 à 17:06
Bonjour
 Je cherche depuis pas mal de temps à extraire de ma base de données les
 enregistrements de deux champs, mais à exclure les enregistrements lorsque 
le
champ email est dupliqué ou vide ce qui n'est pas le cas avec la requete
 ci-dessous
SqlEmail = "SELECT DISTINCT email, NomPrenon FROM Membre where echeance > #"
 & MaDate & "# ORDER BY NomPrenon"
 Merci pour votre aide

Michele

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2006 à 13:03
Salut
Pour les enregistrements dupliqués, "Distinct" devrait fonctionne, mais je crois que Distinct s'adresse à l'ensemble des champs demandés : Donc il faudra que "email" et "NomPrenom" soient indentiques pour que la requète les exclue.
Tu peux aussi délaisser ce problème sous SQL et traiter le problème une fois les données reçues et écarter les données en double.
Tester les champs vides : Suffit d'ajouter une clause :
   "Select Distinct email, NomPrenon " & _
   "  From Membre " & _
   " Where echeance > #" & MaDate & "# " & _
   "   And email is not null " & _
   " Order By NomPrenon"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_Michele Messages postés 25 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 11 juin 2006
11 juin 2006 à 20:44
Bonsoir

Merci pour ta reponse



Distinct fonctionne correctement si les deux champs sont identiques et il n'est pas necessaire de mettre la clause is not null car dès que l'un des deux champs est vide l'enregistrement n'est pas affiché.
Je pense que j'ai du mal formuler ma demande en fait je veux afficher tous les enregistrements uniques du champ email ceci a pour but de ne pas envoyer deux fois le même email.
mais comme une adresse email n'est pas representative je veux conserver le champ NomPrenom lié à chaque adresse email  

Michele
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 juin 2006 à 17:06
Salut
Alors il faut le faire en deux étapes :
- Rechercher les email uniques avec Distinct
- Une fois la liste dans le RecordSet, requestionner la DB pour demander le NomPrenom associé à chaque email.
Tu peux aussi continuer à ne faire qu'une seule requète en supprimant le Distinct et faire la recherche de doublon ensuite en supprimant les Record dont le champ email existe déjà dans le RecordSet (avec monRecordSet.Delete).

Quoique, en y reflechissant, on peut le faire en une seule requète complexe :
   "Select m1.email, m1.NomPrenon " & _
   "  From Membre m1 " & _
   " Where m1email in (Select Distinct m2.email " & _
   "                     from Membre m2 " & _
   "                    where m2.echeance > #" & MaDate & "#) " & _
   " Order By m1.NomPrenon"

Essaye, tu verras bien

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
Rejoignez-nous