Lister les actes à chercher

Demande de requêtes/listes personnalisées, questions sur le plugin B.O.A. ou le Générateur de requêtes intégré : tout ce qui touche au SQL se trouvera ici.

Lister les actes à chercher

Messagede lasmarco » 10 Sep 2013, 16:58

Bonjour,

Je suis à la recherche d'une requête pour lister les actes à chercher mais en fonction de la génération. Je m'explique, par exemple je voudrais connaitre tous les individus qui sont à chercher, mais que les SOSA et jusqu'à la 10ème génération.

Merci pour votre aide,

Marc
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Lister les actes à chercher

Messagede DDdeberdeux » 10 Sep 2013, 21:50

Bonsoir,

Vous avez quasiment ce que vous cherchez dans la Liste des actes (menu Listes). Il suffit de sélectionner "Actes à chercher" dans le champ Types d'actes à lister, et de cocher la case "Num. SOSA uniquement". Comme il n'y a pas de colonne SOSA ou Génération accessible, vous pouvez placer un filtre sur l'année (petit triangle noir de l'entête de la colonne, filtre "custom"). Sachant qu'une génération moyenne est d'environ 30 ans, en sélectionnant les années supérieures à 1700 vous aurez à peu près vos 10 générations.

André
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 76
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN

Re: Lister les actes à chercher

Messagede lasmarco » 11 Sep 2013, 06:43

Merci André pour votre réponse, mais malheureusement je connais très bien ce listing.

Cependant, moins pratique qu'avec une Vrai requête SQL. J'ai commencé à faire ceci pour ceux que ça intéresse :
Code: Tout sélectionner
SELECT I.NUM_SOSA as Sosa, E.EV_IND_TYPE as Type, I.NOM, I.PRENOM,
E.EV_IND_DATE_WRITEN as Dates, E.EV_IND_VILLE as Ville, E.EV_IND_DEPT as Departement
FROM INDIVIDU I, EVENEMENTS_IND E
WHERE I.KLE_DOSSIER = 2
AND I.NUM_SOSA BETWEEN '1' AND '511'
AND E.EV_IND_KLE_FICHE = I.CLE_FICHE
AND E.EV_IND_KLE_DOSSIER = I.KLE_DOSSIER
AND E.EV_IND_ACTE = -2
ORDER BY E.EV_IND_VILLE, E.EV_IND_DATE, I.NUM_SOSA


Ce listing correspond à peu près à ce que je demande mais il n'y a que les naissances et les décès. Il me manque l'année comme dans le fameux listing préétablis et également les mariages. Pour cette dernière,j'utilise la requête suivante:
Code: Tout sélectionner
SELECT I.NUM_SOSA as Sosa, E.EV_FAM_TYPE as Type, I.NOM, I.PRENOM, I1.NOM as NOM_CJT, I1.PRENOM as PRENOM_CJT,
E.EV_FAM_DATE_WRITEN as Dates, E.EV_FAM_VILLE as Ville, E.EV_FAM_DEPT as Departement
FROM T_UNION T, INDIVIDU I, INDIVIDU I1, EVENEMENTS_FAM E
WHERE T.KLE_DOSSIER = 2
AND I.NUM_SOSA BETWEEN '1' AND '511'
AND I.CLE_FICHE = T.UNION_MARI
AND I.KLE_DOSSIER = T.KLE_DOSSIER
AND I1.CLE_FICHE = T.UNION_FEMME
AND I1.KLE_DOSSIER = T.KLE_DOSSIER
AND E.EV_FAM_KLE_FAMILLE = T.UNION_CLEF
AND E.EV_FAM_TYPE = 'MARR'
AND EV_FAM_DEPT <> ''
ORDER BY E.EV_FAM_VILLE, E.EV_FAM_DATE, I.NOM, I.PRENOM, I1.NOM, I1.PRENOM


Pour cette partie ci, il faut que j'arrive à concaténer les noms et prénoms, que je récupère le nom/prénom du père et celle de la mère et l'année.

Pour info, les SOSA compris entre 1 et 511 correspondent à la 9ème Génération. :)
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Lister les actes à chercher

Messagede DDdeberdeux » 11 Sep 2013, 20:25

Bravo, je vois que vous avez mis le "pied à l'étrier". Alors juste quelques conseils...
La syntaxe que vous utilisez est l'ancienne méthode qui permet difficilement de distinguer les égalités assurant les jointures entre tables des filtres sur les enregistrements. Le résultat est le même dans votre cas en écrivant par exemple:
Code: Tout sélectionner
SELECT m.NUM_SOSA as Sosa_mari
,f.NUM_SOSA as Sosa_femme
, E.EV_FAM_TYPE as Type
, m.NOM||coalesce(' '||m.PRENOM,'') as mari --coalesce car prénom peut être nul
, f.NOM||coalesce(' '||m.PRENOM,'') as femme
,E.EV_FAM_DATE_WRITEN as "Date mariage" --titre entre guillemets car contient mot-clé Date et espace
, E.EV_FAM_VILLE as Ville
, E.EV_FAM_DEPT as Departement
from t_union t
inner join individu m on m.cle_fiche=t.union_mari
inner join individu f on f.cle_fiche=t.union_femme
inner join evenements_fam e on e.ev_fam_kle_famille=t.union_clef and e.ev_fam_type='MARR'
  and e.ev_fam_dept<>'' and e.ev_fam_date_year is not null --pour éliminer les mariages sans aucune date
where m.kle_dossier=2 --le champ "dossier" des autres tables (sauf MULTIMEDIAS) est redondant, c'est une anormalité de la base
and (m.num_sosa<512 or f.num_sosa<512) --permet de ne pas ignorer les remariages des sosas
order by e.ev_fam_ville
,e.ev_fam_date_year --assure le tri chronologique si la date n'est pas complète
,e.ev_fam_date nulls last --le champ date est nul si jour mois ou année sont inconnus
,4 --pour définir l'ordre, on peut repérer un champ par son n° de ligne
,5

Cette syntaxe des jointures permet de distinguer en particulier les "inner join" où il doit y avoir une correspondance dans chaque table, des "left join" où un enregistrement de la table précédente peut ne pas avoir de correspondance dans la seconde. Ce n'est pas le cas dans cet exemple, mais c'est très souvent utile.
Pour la concaténation de chaînes de caractères utiliser la barre verticale doublée || mais attention, si dans la concaténation une chaîne est nulle (à distinguer d'une chaîne vide), alors le résultat est nul. C'est pourquoi j'ai utilisé la fonction coalesce dans laquelle le résultat est le deuxième terme si le premier terme est nul (dans la table INDIVIDU le prénom peut être nul).
Les nombres ne devraient pas être mis entre cotes. Firebird l'accepte mais il doit faire la conversion de chaîne de caractères en nombre.
Et pour aller plus loin, je vous conseille http://sql.developpez.com/ de très bons tutoriels en faisant attention cependant qu'ils ne sont pas spécifiques à Firebird.
Pour les spécificités, les fonctions internes voyez http://www.firebirdsql.org/file/documen ... upd21.html

André

PS:pour la compréhension, j'ai ajouté des commentaires sur certaines lignes (ils commencent par --). Il faut les supprimer si vous exécutez cette requête dans le BOA qui ne supporte pas ces lignes de commentaires.
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 76
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN


Retourner vers Le Coin du SQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun et 1 invité

cron