forum Ancestrologie
Ancestrologie - Le Programme => Ancestrologie - Spécifiques => Requêtes SQL => Discussion démarrée par: Anonymous le 02 Mai 2006 à 20:48:51
-
bonjour,
je voudrai rajouter dans ce tableau une colonne "autres sosa" contenant tous les numéros sosa de chaque individu, est ce possible? ou faut il attendre une future version?
tableau:
SELECT DISTINCT
I.NUM_SOSA AS SOSA
, I.NOM
, I.PRENOM
, N.EV_IND_VILLE AS VILLE_NAISSANCE
, N.EV_IND_DATE_YEAR AS ANNEE_NAISSANCE
, N.EV_IND_DATE_WRITEN AS DATE_NAISSANCE
, D.EV_IND_VILLE AS VILLE_DECES
, D.EV_IND_DATE_YEAR AS ANNEE_DECES
, D.EV_IND_DATE_WRITEN AS DATE_DECES
, F.EV_FAM_VILLE AS VILLE_UNION
, F.EV_FAM_DATE_YEAR AS ANNEE_UNION
, F.EV_FAM_DATE_WRITEN AS DATE_UNION
, R.REF_EVE_LIB_LONG AS TYPE_UNION
, IC.NOM AS NOM_CONJOINT
, IC.PRENOM AS PRENOM_CONJOINT
, IC.NUM_SOSA AS SOSA_CONJOINT
, P.NOM AS NOM_PERE
, P.PRENOM AS PRENOM_PERE
, P.NUM_SOSA AS NUM_SOSA_PERE
, M.NOM AS NOM_MERE
, M.PRENOM AS PRENOM_MERE
, M.NUM_SOSA AS NUM_SOSA_MERE
, I.SEXE
, I.CLE_FICHE
, IC.CLE_FICHE AS CLE_FICHE_CONJOINT
, N.EV_IND_SUBD AS SUBDIVISION_NAISSANCE
, D.EV_IND_SUBD AS SUBDIVISION_DECES
, PROF. EV_IND_DESCRIPTION AS PROFESSION
FROM INDIVIDU I
LEFT OUTER JOIN EVENEMENTS_IND N ON I.CLE_FICHE = N.EV_IND_KLE_FICHE AND N.EV_IND_TYPE= 'BIRT'
LEFT OUTER JOIN EVENEMENTS_IND D ON I.CLE_FICHE = D.EV_IND_KLE_FICHE AND D.EV_IND_TYPE= 'DEAT'
LEFT OUTER JOIN EVENEMENTS_IND PROF ON I.CLE_FICHE = PROF.EV_IND_KLE_FICHE AND PROF.EV_IND_TYPE= 'OCCU'
LEFT OUTER JOIN INDIVIDU P ON I.CLE_PERE = P.CLE_FICHE
LEFT OUTER JOIN INDIVIDU M ON I.CLE_MERE = M.CLE_FICHE
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 EVENEMENTS_FAM F ON U.UNION_CLEF = F.EV_FAM_KLE_FAMILLE
LEFT OUTER JOIN REF_EVENEMENTS R ON F.EV_FAM_TYPE =R .REF_EVE_LIB_COURT
WHERE I.KLE_DOSSIER =2
AND (P.NUM_SOSA >0 OR M.NUM_SOSA >0 OR I.NUM_SOSA >0)
ORDER BY I.NUM_SOSA
-
Je ne comprends pas la question.
Seuls les ascendants directs du Sosa N° 1 ont un numéro Sosa (rechercher définition du Sosa).
Dans cette requête, ceux qui n'ont pas de N° Sosa ne sont pas des ascendants de ceux qui en ont un.
-
je sais que dans ce tableau il n'y a pas que des personnes ayant un numéro sosa, mais c'est voulu.
cela me permet d'avoir une liste contenant tout mes ascendants et ainsi que tout leurs enfants (que j'utilise pour repertorier les copies numériques d'actes)
mais j'aimerai ajouter une colonne contenant tous les numéros sosa de chaque personne, j'en ai deja une avec le numéro sosa de la fiche mais il me faudrai tous les autres aussi car j'ai plein d'implexe
mais je ne c'est pas si c'est possible car je suis nul en sql, j'ai obtenu ce tableau sur le forum et j'ai juste rajouté quelques colonnes
mais la je ne trouve pas la solution si il en existe une
-
Dans ta base, tu as fait une numérotation sosa, à partir de ton sosa 1, tu auras tous les ascendants avec un n° sosa, mais chaque ascendant n'a qu'un n° sosa.
Individu XX=sosa 1
son père = n°sosa 2
sa mère = n° sosa 3
-
tout le monde a je pense des ancetres qui apparaissent plusieurs fois dans son ascendance!
ils donc plusieurs numeros sosa (ancestro n'en montre que un dans la fiche pour l'instant) puisque plusieurs de leurs enfants ont un numero sosa!
je voudrai donc savoir si via le sql ont peu acceder a ses multiples numero sosa? ils apparaissent en tant que implexe dans l'ascendance donné via le menu documents
exemple:
AB1 fils de A et B porte le sosa 500
AB1 fils de A et B porte le sosa 800
dons ses parents ont comme numéro
pour A 1000 et 1600
Pour B 1001 et 1601
je voudrai donc rajouter dans mon tableau une colonne contenant:
pour la ligne concernant A "1000 et 1600"
pour la ligne concernant B "1001 et 1601"
car I.NUM_SOSA ne me donne que 1000 pour A et 1001 pour B
les sosa les plus petits (théoriquement)
-
Difficile. Il y a des individus qui peuvent avoir 3 Sosa voir plus.
Mais peut_être que "autres arbres affiches les diffférents Sosa, je n'ai pas regardé
-
Difficile. Il y a des individus qui peuvent avoir 3 Sosa voir plus.
Et même beaucoup plus, tout dépend si on arrête la recherche de l'ascendance d'un individu à la découverte de l'implexe, ou si on continue la numérotation après cette découverte.
L'état des ascendants affiche bien plusieurs SOSA pour un individu, mais il s'arrête à l'implexe (dans le champ implexe on trouve le premier n° SOSA de l'individu). Après l'exécution de l'état, il est possible de récupérer les différents n° par SQL en interrogeant la table TQ_ARBREREDUIT.
A+
André
-
bonsoir,
merci pour la piste mais desolé je suis nul en SQL, j'ai juste reussit a bidouiller un tableau que l'on mavais donné.
mais la : "Après l'exécution de l'état, il est possible de récupérer les différents n° par SQL en interrogeant la table TQ_ARBREREDUIT. "
il y a bien TQ_SOSA dans TQ_ARBREREDUIT mais je ne sais pas comment j'integre ca dans mon code
-
Bonsoir,
Dans la partie SELECT vous pourriez par exemple ajouter:
,tq.TQ_SOSA
et dans la partie FROM:
LEFT JOIN TQ_ARBREREDUIT tq ON tq.TQ_CLE_FICHE=I.CLE_FICHE
Mais vous aurez ainsi plusieurs lignes identiques (au N° TQ_SOSA près) pour le même individu.
La table TQ_ARBREREDUIT n'est disponible qu'après ouverture puis fermeture de l'état d'ascendance de l'individu de départ.
A+
André
-
merci ca fonctionne (presque)
j'ai juste un probleme avec au moins 2 ancetres (je n'est pas tout regardé) pour qui il n'indique aucun implexe, que ce soit a l'aide du document ascendance complete ou avec PROC_ETAT_ASCENDANCE:
select * from PROC_ETAT_ASCENDANCE(3452,0,2,0)
WHERE IMPLEXE IS NOT NULL
resulat:
aucune ligne pour le premier alors qu'il a tout les sosa suivant:
Sosa : 1832=3644=3800=3868=4028=8176
une ligne pour le second: sosa=1860, implexe=1798
Sosa : 1798=1860=1892=3940=4044
pourtant j'ai bien le sosa n°1 (nip:3452) comme point de depart
et j'ai fait une renumérotation sosa et le calcul de la consanguinité
-
Votre ligne
WHERE IMPLEXE IS NOT NULL
supprime la ligne où figure l'individu avec seulement le SOSA sans implexe, normalement la première ligne où figure la CLE_FICHE de l'individu.
Pour le reste, il est difficile de vérifier sans votre base.
Depuis la base version b4.016, les sosas calculés dans les fiches sont les mêmes que le premier sosa (pas implexe) attribué à un individu dans l'état d'ascendance (du même individu sosa 1 évidemment).
Si le sosa 1 a pour CLE_FICHE 3452, exécutez la procédureEXECUTE PROCEDURE PROC_TQ_ASCENDANCE(3452 /*CLE_FICHE*/
,0 /*NIVEAU 0=tous*/
,0 /*PARQUI 0=tous*/
,2 /*MODE 0=pas d'implexes
1=les implexes
2=tous les ascendants*/)
Cette procédure remplit TQ_ARBREREDUIT de toute l'ascendance de 3452 avec lui-même en sosa 1. Le MODE=2 permet de ne pas arrêter la numérotation SOSA, même des implexes, jusqu'à ce qu'on ne trouve plus d'ascendants sur la branche.
A+
André
PS: C'est quand même plus sympa et pratique de répondre à quelqu'un qui a un pseudo :wink:
-
merci beaucoup
ca fonctionne parfaitement!
pour les lignes multiples ca ne me derange pas je modifie le tableau apres avec excel pour mettre touts les n°sosa dans une meme case et supprimer les lignes ajoutées.
ps: desolé pour le pseudo, je m'identifirair la prochaine fois