Ancestrologie - Plugins et Outils > BOA

Un essai d'extrapolation

(1/2) > >>

Roblim:
Bonjour
Sur la requête ci-dessous concernant les évènements individuels et qui fonctionne

SELECT
  INDIVIDU.NOM,
  INDIVIDU.PRENOM,
  INDIVIDU.ANNEE_DECES,
  INDIVIDU.DATE_DECES,
  EVENEMENTS_IND.EV_IND_TYPE,
  EVENEMENTS_IND.EV_IND_VILLE,
  EVENEMENTS_IND.EV_IND_DEPT,
  EVENEMENTS_IND.EV_IND_PAYS,
  EVENEMENTS_IND.EV_IND_REGION,
  EVENEMENTS_IND.EV_IND_SUBD,
  EVENEMENTS_IND.EV_IND_DESCRIPTION,
  EVENEMENTS_IND.EV_IND_COMMENT
FROM
  INDIVIDU
  INNER JOIN EVENEMENTS_IND ON (INDIVIDU.KLE_DOSSIER = EVENEMENTS_IND.EV_IND_KLE_DOSSIER)
  AND (INDIVIDU.CLE_FICHE = EVENEMENTS_IND.EV_IND_KLE_FICHE)
WHERE
  (INDIVIDU.KLE_DOSSIER = 4)
ORDER BY
  INDIVIDU.NOM

j'ai remplacé les IND par des FAM et cela ne fonctionne pas
SELECT
 
  INDIVIDU.NOM,
  INDIVIDU.PRENOM,
  INDIVIDU.ANNEE_DECES,
  INDIVIDU.DATE_DECES,
  EVENEMENTS_FAM.EV_FAM_TYPE,
  EVENEMENTS_FAM.EV_FAM_VILLE,
  EVENEMENTS_FAM.EV_FAM_DEPT,
  EVENEMENTS_FAM.EV_FAM_PAYS,
  EVENEMENTS_FAM.EV_FAM_REGION,
  EVENEMENTS_FAM.EV_FAM_SUBD,
  EVENEMENTS_FAM.EV_FAM_DESCRIPTION,
  EVENEMENTS_FAM.EV_FAM_COMMENT
FROM
  INDIVIDU
  INNER JOIN EVENEMENTS_FAM ON (INDIVIDU.KLE_DOSSIER = EVENEMENTS_FAM.EV_FAM_KLE_DOSSIER)
  AND (INDIVIDU.CLE_FICHE = EVENEMENTS_FAM.EV_FAM_KLE_FICHE)
WHERE
  (INDIVIDU.KLE_DOSSIER = 4)
ORDER BY
  INDIVIDU.NOM
Je sollicite votre aide pour la faire fonctionner...

jfd:
Bonsoir Roblim

Il y a une erreur dans la ligne suivante :
AND (INDIVIDU.CLE_FICHE = EVENEMENTS_FAM.EV_FAM_KLE_FICHE)

il faut remplacer FICHE par FAMILLE comme suit :
AND (INDIVIDU.CLE_FICHE = EVENEMENTS_FAM.EV_FAM_KLE_FAMILLE)

Cordialement

DDdeBerdeux:

--- Citation de: jfd le 03 Décembre 2022 à 17:40:36 ---Il faut remplacer FICHE par FAMILLE comme suit :
AND (INDIVIDU.CLE_FICHE = EVENEMENTS_FAM.EV_FAM_KLE_FAMILLE)

--- Fin de citation ---
Bonjour,
Ça ne marche pas non plus parce que les événements familiaux ne sont pas liés (= affectés) aux individus, mais à la famille (=union). Pour créer le lien avec un individu, il faut donc passer par le code des unions dont il est membre.
Pour faciliter l'écriture et la lecture de votre requête ci-dessous, j'ai donné à chaque table un nom d'alias simple, i pour INDIVIDU, u pour T_UNION et e pour EVENEMENTS_FAM.
Les parenthèses pour établir les jointures ne sont pas obligatoires s'il n'y a pas de confusion possible.
J'ai aussi supprimé les jointures du genre  (INDIVIDU.KLE_DOSSIER = EVENEMENTS_IND.EV_IND_KLE_DOSSIER) qui ne sert à rien puisque l'événement appartient obligatoirement au même dossier que l'individu auquel il est affecté.
On peut dire la même chose pour la table T_UNION où chaque union (=famille) fait partie du même dossier que ses membres, mari et femme devant obligatoirement faire partie de ce même dossier.
Les champs EVENEMENTS_IND.EV_IND_KLE_DOSSIER, EVENEMENTS_FAM.EV_FAM_KLE_DOSSIER et T_UNION.KLE_DOSSIER sont des champs redondants proscrits à de rares exceptions prêt par les normes concernant les bases de données relationnelles.

La jointure INNER JOIN T_UNION u ON i.CLE_FICHE IN (u.UNION_MARI,u.UNION_FEMME) est équivalente à
INNER JOIN T_UNION u ON u.UNION_MARI=i.CLE_FICHE OR u.UNION_FEMME=i.CLE_FICHE

SELECT
  i.NOM,
  i.PRENOM,
  i.ANNEE_DECES,
  i.DATE_DECES,
  e.EV_FAM_TYPE,
  e.EV_FAM_VILLE,
  e.EV_FAM_DEPT,
  e.EV_FAM_PAYS,
  e.EV_FAM_REGION,
  e.EV_FAM_SUBD,
  e.EV_FAM_DESCRIPTION,
  e.EV_FAM_COMMENT
FROM
  INDIVIDU i
  INNER JOIN T_UNION u ON i.CLE_FICHE IN (u.UNION_MARI,u.UNION_FEMME)
  INNER JOIN EVENEMENTS_FAM e ON e.EV_FAM_KLE_FAMILLE=u.UNION_CLEF
WHERE
  i.KLE_DOSSIER = 4
ORDER BY
  i.NOM,i.PRENOM

André

Roblim:
Bonjour André,
J'étais justement devant le constat que, bien que ne "beuguant" pas, les résultats sont effectivement erronés.
J'allais faire une réponse pour vous demander, si il existe,ce qui s'appelait à l'époque, dans mon activité, un MCD d'Ancestrologie. Ce document sauf erreur montrait les liens entre les différentes tables et aidait à la construction des requêtes.
En tous les cas merci pour votre confirmation et je vais tester votre dernière proposition.
Un grand merciiiiiiiiiiiiiiiii

Roblim:
J'ai une erreur 104 sur la ligne 2 colonne 1

Navigation

[0] Index des messages

[#] Page suivante

Une erreur s'est produite lors du remerciement
Remerciement...
Utiliser la version classique