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
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!