Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Le mercredi 16 mars 2011 à 09:21 +0100, Alexander Thurgood a écrit :

De : Alexander Thurgood <alex.thurgood@gmail.com>

Le 15/03/11 17:47, barbault a écrit :

Bonsoir,

Mon projet est de faire des étiquettes (le moins possible) pour envoyer
du courrier à tous les adhérents.

Je suis presque débutant en SQL.
Est-ce possible? 

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"?

Pour moi, le problème vient du fait que les deux noms doivent appartenir
à un même "ad", ce qui est logique, mais si j'ai bien compris, tu n'es
pas allé jusqu'au bout de la normalisation de tes données. Normalement,
cela se fait en séparant bien les deux attributs chacun dans une table
dont l'id (dans ce cas, "ad") serait lié et donc commun aux deux (dans
deux tables distinctes). L'exemple de ta table R montre que tu n'a pas
respecté cette normalisation puisque tu y as mis aussi bien des
attributs "ne" que des attributs "nm".

Cela conduit, même avec une jointure interne sur "R" à ressortir
plusieurs cas de figure qui ne correspondent pas, même si les bons y
sont aussi, sauf à faire des exclusions, mais alors on rentre dans un
schéma encore plus complexe avec des exceptions à n'en plus finir.

A la limite, la seule table R suffirait si tu remplissais
systématiquement le champ "nm" chaque fois qu'il y avait un nom de mari,
sans en créer de nouvelle fiche à chaque fois. Mais tu découvrirais sans
doute d'autres limitations par la suite, probablement les mêmes qui
t'ont poussé à séparer la saisie des noms au départ.

Peut-être que d'autres plus aguerris en SQL pourront trouver la
solution, mais j'ai retourné la question dans plusieurs sens, et à
chaque fois me retrouvais avec des réponses en trop ne correspondant
visiblement pas à ce que tu veux.

Alors, soit une table R, comportant :

id | ad | ne | nm |
-------------------
1  | a  |  d |  e |
2  | b  |  h |    |
3  | c  |    |  g |

et c'est celle-ci qui servirait directement pour la création d'étiquettes.

Soit, une solution de 2 tables, disons S (membre) comme actuellement :

id | ad |  n | s |
-------------------
1  | a  |  d |  f |
2  | a  |  e |  m |
3  | b  |  h |  f |
4  | c  |  g |  m |


et puis T (epoux) :

id | ad | nm | s |
-------------------
1  | a  |  z |  f |
2  | a  |  y |  m |
3  | b  |  z |  f |
4  | c  |  a |  m |

Puis ta requête serait :

SELECT S.ad as "Adresse", S.n as "Nom", T.nm as "Mari" from S,T where
S.ad = T.ad

Alex
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  |
 -------------------
 1  | a  |  d |  f |
 2  | a  |  e |  m |
 3  | b  |  h |  f |
 4  | c  |  g |  m | 
produit ce résultat qui va me permettre de produire les étiquettes
 ad | ne | nm |
---------------
 a  |  d |  e | regrouper les enregistrements 1 et 2 même ad
 b  |  h |    | enregistrement 3
 c  |    |  g | enregistrement 4
certaines pour couple, d'autres pour adhérente isolée, d'autres pour
adhérente isolé.
Ce que je sais produire c'est cela:
 ad | ne | nm |
---------------
 a  |  d |    | 
 a  |    |  e | 
 b  |  h |    | 
 c  |    |  g | 

J'ai bien sûr d'autres solutions du genre table de couple, table
d'adresses... mais je voudrais éviter de toucher aux tables de la base.
Merci d'essayer de m'aider.
JMB




-- 
Envoyez un mail à users+help@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.