Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
861 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL] Histoire de doublons...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Histoire de doublons...

n°123214
heffer
PDG du Site des Mains
Posté le 08-04-2002 à 14:42:07  profilanswer
 

J'ai une table d'adhérents qui contient les champs suivants: Nom, Prénom, Adresse, Ville
Il se peut que deux adhérents habitent à la même adresse (par ex mari et femme).
Or je me sers de cette table pour éditer des étiquettes d'envelopppes et je veux éviter d'envoyer deux enveloppes à la même adresse.
Don il faut que je fasse une requête qui me permet d'obtenir la table suivante:
Nom1 Prénom1 Nom2 Prénom2 Adresse Ville
Où Nom1 et Nom2 sont les deux personnes habitant à la même adresse.
Malheureusement je ne maîtrise pas SQL, je fais donc appel à vous pour m'aider.  :)  
Merci!
 
PS: je travaille sous access2000


---------------
Découvrez la version 2005 du  Site des Mains!! C'est la même qu'en 2004!
mood
Publicité
Posté le 08-04-2002 à 14:42:07  profilanswer
 

n°123216
jupiler
Un cousin...
Posté le 08-04-2002 à 14:55:04  profilanswer
 

tu veux que la requete retourne aussi ceux qui sont seuls à leur adresse ?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°123225
Aratorn
Black Swordman
Posté le 08-04-2002 à 15:07:09  profilanswer
 

Tu peux soit faire un groupe sur l'adresse et tu auras :
 
Adresse A
nom1
nom2
nom3
 
Adresse B
nom4
 
Adresse C
nom5
nom6
 
ou bien utiliser le mot clé Distinct
qui renvoie tous les enregistrements différents.

n°123244
heffer
PDG du Site des Mains
Posté le 08-04-2002 à 15:27:34  profilanswer
 

Jupiler> Non car le format d'étiquettes ne sera pas le même si il y a plusieurs noms pour la même adresse. Donc il me faudrait: une table avec les personnes "seules" et une table avec les couples.
 
aratorn> ça veut dire que j'aurai un table pour chaque adress?! :??:


---------------
Découvrez la version 2005 du  Site des Mains!! C'est la même qu'en 2004!
n°123264
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-04-2002 à 16:14:57  profilanswer
 

heffer a écrit a écrit :

aratorn> ça veut dire que j'aurai un table pour chaque adress?! :??:  




 
Non, le mot clé DISTINCT te permet de ne renvoyer qu'une seule adresse :  
 
SELECT DISTINCT Adresse FROM Table => te renverra toutes les adresses qu'une seule fois, meme si elles sont présentes plusieurs fois

n°123281
Krueger
tout salaire demande dutravail
Posté le 08-04-2002 à 16:35:55  profilanswer
 

Moi j'aurais utilisé une aggrégation pour obtenir pour chaque addresse Les personnes qui y vivent. Un truc du genre:
SELECT *
FROM my_table
GROUP BY address;


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°123282
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-04-2002 à 16:45:31  profilanswer
 

On ne peut pas :non:
 
Si tu n'utilises pas une fonction d'agrégation, tu n'auras aucun regroupement de fait et tu auras une erreur 3122 (sous Jet/Access)

n°123287
Krueger
tout salaire demande dutravail
Posté le 08-04-2002 à 16:59:12  profilanswer
 

Ca marche pas sous Access? Dommage. :/


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°123308
Mara's dad
Yes I can !
Posté le 08-04-2002 à 17:54:24  profilanswer
 

Pour ceux qui sont éxactement 2 à la même adresse.
 
SELECT First(ad.nom) AS n1, First(ad.prénom) AS p1, Last(ad.nom) AS n2, Last(ad.prénom) AS p2, ad.adr, ad.ville FROM ad
GROUP BY ad.adr, ad.ville
HAVING (((Count(ad.nom))=2));
 
Pour ceux qui sont tout seul à une adresse :
 
SELECT First(ad.nom) AS PremierDenom, First(ad.prénom) AS PremierDeprénom, ad.adr, ad.ville
FROM ad
GROUP BY ad.adr, ad.ville
HAVING (((Count(ad.nom))=1));
 
Testé et approuvé sur MS-ACCESS 2000.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°123352
heffer
PDG du Site des Mains
Posté le 08-04-2002 à 20:01:52  profilanswer
 

Bon boulot Mara's dad!
Voilà un forumeur comme je les aime! :)  
Merci quand même aux autres aussi!


---------------
Découvrez la version 2005 du  Site des Mains!! C'est la même qu'en 2004!
mood
Publicité
Posté le 08-04-2002 à 20:01:52  profilanswer
 

n°123357
Mara's dad
Yes I can !
Posté le 08-04-2002 à 20:19:26  profilanswer
 

De rien  ;)


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°123386
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-04-2002 à 22:05:08  profilanswer
 

N'empeche que j'avais raison :) si on n'utilise pas de fonctions d'agrégation, ça marche pas ! First et Last sont des fonctions d'agrégation  :)  
 
A+ et bravo à Mara  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL] Histoire de doublons...

 

Sujets relatifs
[delphi] pb de requêtes SQL[SQL] Comment exporter des tables faites sous Acces vers SQL
SQL Server : Foreign Key ... {pour les bons}[MS SQL SERVER] taille en octets des tables
[phpMyAdmin 2.2.1] Comment rapatrier structure et données SQL ?SQL :Server Est ce possible ?
SQL Server : Comment désactiver l'affichage des tables systemes ?[SQL] appel de DLL possible?
[SQL]SQL Serveur et requete
Plus de sujets relatifs à : [SQL] Histoire de doublons...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR