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.thurg...@gmail.com> Répondre à : us...@libreoffice.org Pour : us...@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+h...@libreoffice.org List archive: http://listarchives.libreoffice.org/www/users/ *** All posts to this list are publicly archived for eternity *** -- Envoyez un mail à users+h...@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