Histoire de doublons... [SQL] - Programmation
Marsh Posté le 08-04-2002 à 14:55:04
tu veux que la requete retourne aussi ceux qui sont seuls à leur adresse ?
Marsh Posté le 08-04-2002 à 15:07:09
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. 
Marsh Posté le 08-04-2002 à 15:27:34
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?!  
 
Marsh Posté le 08-04-2002 à 16:14:57
| 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 
Marsh Posté le 08-04-2002 à 16:35:55
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; 
Marsh Posté le 08-04-2002 à 16:45:31
On ne peut pas  
 
 
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) 
Marsh Posté le 08-04-2002 à 16:59:12
Ca marche pas sous Access? Dommage.  
 
Marsh Posté le 08-04-2002 à 17:54:24
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. 
Marsh Posté le 08-04-2002 à 20:01:52
Bon boulot Mara's dad! 
Voilà un forumeur comme je les aime!  
  
Merci quand même aux autres aussi! 
Marsh Posté le 08-04-2002 à 20:19:26
De rien   
 
Marsh Posté le 08-04-2002 à 22:05:08
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
 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   
 
Marsh Posté le 08-04-2002 à 14:42:07
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!