SQL regrouper des enregistrements

Transféré ici, car envoyé à la mauvaise liste hier :-/

-------- Message original --------
Sujet: Re: [fr-users] SQL regrouper des enregistrements

Bonjour,
Effectivement si j'avais cela ce serait simple, mais ce n'est pas le
cas.
J'ai une base complexe contenant une table adhérents dont S est un
résumé.(environ 600 adhérents homme ou femme)
Je dois produire des étiquettes avec 1 seul envoi par couple (même ad).

J'ai réussi à le faire en important la table S dans un tableur puis par
copier-coller j'ai reconstitué les 80 couples et obtenu la table que tu
nommes R et qui m'a servi à produire les étiquettes.
Ce que je cherche, c'est d'industrialiser la manipulation pour mettre
l'outil dans des mains disons peu expérimentées.

Donc je cherche une requête qui à partir de la table adhérent
id | ad | n | s |

Bonjour

Message du 16/03/11 16:17
De : "barbault"

Mon projet est de faire des étiquettes (le moins possible) pour envoyer
du courrier à tous les adhérents.
...
Je n'ai pas trouvé comment, même en essayant différentes jointures
internes et externes sur les tables.
Dois-je utiliser "R" ou "S"?

J'arrive après "la bataille" mais, juste pour info (puisque tu
as déjà une solution), il me semble possible d'obtenir ton résultat
en ne travaillant qu'avec la table R et des jointures.

Voir dans la base jointe l'enchaînement de vues / requêtes
(nommées Pys1, Pys2, Pys3 pour comprendre leur enchaînement)

http://www.cijoint.fr/cjlink.php?file=cj201103/cijCAo4sjJ.odb

J'ai ajouté un cas de figure dans les données pour tester.

Cordialement
Pierre-Yves

Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ?
Je crée ma boîte mail www.laposte.net

Bonjour

Message du 16/03/11 16:17
De : "barbault"

Mon projet est de faire des étiquettes (le moins possible) pour envoyer
du courrier à tous les adhérents.
...
Je n'ai pas trouvé comment, même en essayant différentes jointures
internes et externes sur les tables.

il me semble possible d'obtenir ton résultat
en ne travaillant qu'avec la table R et des jointures.

Voir dans la base jointe l'enchaînement de vues / requêtes
(nommées Pys1, Pys2, Pys3 pour comprendre leur enchaînement)

http://www.cijoint.fr/cjlink.php?file=cj201103/cijCAo4sjJ.odb

Pour la pérennité du fil j'ajoute le sql des vues/requêtes de la base ci-dessus...

Vue Pys1

SELECT "R"."ad", "R"."ne", "R_1"."nm" FROM "R" AS "R", "R" AS "R_1" WHERE "R"."ad" = "R_1"."ad"

Vue Pys2

SELECT "ad" FROM ( SELECT "R"."ad", "R"."ne", "R_1"."nm" FROM "R" AS "R", "R" AS "R_1" WHERE "R"."ad" = "R_1"."ad" ) AS "Pys1" GROUP BY "ad" HAVING ( ( COUNT( "ad" ) = 1 ) )

Requête Pys3

SELECT "ad", "ne", "nm" FROM "Pys1" WHERE "ad" in (select "ad" from "Pys2") OR
(IFNULL("ne", 'vide') <> 'vide' AND IFNULL("nm", 'vide') <> 'vide')

Cordialement
Pierre-Yves

Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ?
Je crée ma boîte mail www.laposte.net