forum Ancestrologie
Ancestrologie - Plugins et Outils => BOA => Discussion démarrée par: Helene le 01 Juin 2008 à 09:59:39
-
Bonjour,
J'ai essayé de faire une requête pour avoir une "table des décès" sur une commune, avec parents et conjoints. ca me satisfait à peu près, sauf que j'ai tous les conjoints et que j'aimerais avoir seulement le dernier (pour ne voir apparaître qu'une seule fois le décès d'une personne qui aurait eu plusieurs conjoints).
Quelqu'un aurait une solution à me proposer?
merci d'avance
Hélène
(PS : Je ne sais pas comment faire apparaître la requête dans un cadre blanc comme c'est souvent fait...)
SELECT EXTRACT (YEAR FROM D.EV_IND_DATE) AS AA
, EXTRACT (MONTH FROM D.EV_IND_DATE) AS MM
, EXTRACT (DAY FROM D.EV_IND_DATE) AS JJ
, D.EV_IND_DATE_WRITEN AS DATE_DECES
, I.NOM
, I.PRENOM
, I.ANNEE_DECES-I.ANNEE_NAISSANCE AS AGE
, PAPA.PRENOM AS PRENOM_PAPA
, MAMAN.NOM AS NOM_MAMAN
, MAMAN.PRENOM AS PRENOM_MAMAN
, IC.NOM AS NOM_CONJOINT
, IC.PRENOM AS PRENOM_CONJOINT
, D.EV_IND_SUBD AS LIEU_DIT
, D.EV_IND_COMMENT AS NOTE
FROM INDIVIDU I
LEFT OUTER JOIN EVENEMENTS_IND D ON I.CLE_FICHE = D.EV_IND_KLE_FICHE AND D.EV_IND_TYPE=
'DEAT'
LEFT OUTER JOIN T_UNION U ON I.CLE_FICHE = U.UNION_MARI OR I.CLE_FICHE = U.UNION_FEMME
LEFT OUTER JOIN INDIVIDU IC ON (U.UNION_MARI = IC.CLE_FICHE OR U.UNION_FEMME = IC.CLE_FICHE)
AND IC.CLE_FICHE <> I.CLE_FICHE
LEFT OUTER JOIN INDIVIDU PAPA ON I.CLE_PERE = PAPA.CLE_FICHE
LEFT OUTER JOIN INDIVIDU MAMAN ON I.CLE_MERE = MAMAN.CLE_FICHE
WHERE I.KLE_DOSSIER = 1
AND ( D.EV_IND_VILLE='Quimper' ) AND (D.EV_IND_DATE_YEAR > 1800) AND (D.EV_IND_DATE_YEAR <
1907)
ORDER BY AA, MM, JJ, I.NOM
-
Bonjour,
Pour mettre du code de façon qu'il soit écrit dans une fonte à espacement fixe, donc respectant les alignements verticaux, il faut l'écrire entre les deux balises insérées en cliquant sur le bouton "#" de cet éditeur.
Cà peut donner ce qui suit:
select sr.aa
,sr.mm
,sr.jj
,sr.date_deces
,i.nom
,i.prenom
,i.annee_deces-i.annee_naissance as age
,(select age_texte from proc_age_individu(sr.ev_ind_kle_fiche))
,papa.nom as prenom_papa
,papa.prenom as prenom_papa
,maman.nom as nom_maman
,maman.prenom as prenom_maman
,conjoint.nom as nom_conjoint
,conjoint.prenom as prenom_conjoint
,sr.lieu_dit
,sr.note
from (select d.ev_ind_kle_fiche
,d.ev_ind_date_year as aa
,d.ev_ind_date_mois as mm
,extract (day from d.ev_ind_date) as jj
,d.ev_ind_date_writen as date_deces
,d.ev_ind_subd as lieu_dit
,d.ev_ind_comment as note
,(select first(1) cle_fiche
from proc_trouve_conjoints(0,d.ev_ind_kle_fiche)
order by ordre_union desc) as cle_conjoint
from evenements_ind d
where d.ev_ind_type='DEAT'
and d.ev_ind_ville='Quimper'
and d.ev_ind_date_year between 1800 and 1907
and d.ev_ind_kle_dossier=1) as sr
inner join individu i on i.cle_fiche =sr.ev_ind_kle_fiche
left join individu papa on papa.cle_fiche=i.cle_pere
left join individu maman on maman.cle_fiche=i.cle_mere
left join individu conjoint on conjoint.cle_fiche=sr.cle_conjoint
order by sr.aa,sr.mm,sr.jj,i.nom,i.prenom
Supprimez la ligne commençant par ",(select age_texte..." si votre base n'est pas en b5.100 utilisant Firebird 2.1, car ce champ n'existe pas dans les versions précédentes.
A+ si vous avez besoin d'explications.
André
-
Merci beaucoup.
je vais de ce pas essayer de comprendre ca et tester.
A +
Hélène
-
Testé et approuvé!
Je n'ai pas pris le temps d'essayer de comprendre, mais je le ferai car je pense sortir également un jour des tables de naissance et des tables de mariages.
Merci beaucoup.
Hélène