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



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


-------- Message original --------
Sujet: Re: [fr-users] SQL regrouper des enregistrements
Date : Tue, 15 Mar 2011 21:10:23 +0100
De : Alexander Thurgood <alex.thurgood@gmail.com>
Répondre à : users@libreoffice.org
Pour : users@libreoffice.org
Groupes de discussion: gmane.comp.documentfoundation.libreoffice.user
Références : <1300207626.2059.23.camel@buro-jm>

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





-- 
Unsubscribe instructions: E-mail to users+help@libreoffice.org
List archive: http://listarchives.libreoffice.org/www/users/
*** All posts to this list are publicly archived for eternity ***

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