Remonter

MySQL dans TNG

Dans la création de rapport, il est beaucoup plus flexible d'utiliser un requête SQL pour obtenir le résultat désiré. On a besoin d'un minimum de connaissance en base de données et en notion de requête. Je donne ci-bas des exemples de requête qui nous permet d'évaluer la complexité ou simplicité de la chose selon notre état d'esprit.

 

 

Documemtations

 

Un bon document de référence en français en format PDF sur MySQL est disponible à http://www.mysql.com/ et le document est dans http://dev.mysql.com/doc/. Au besoin il est également sur mon site : disponible ici.

 

J'ai également un fichier de sauvegarde de rapports offert sur le Forum TNG comprenant des dizaines de requêtes SQL qui peuvent servir de modèle. Attention les mots sont en allemand mais le SQL est en anglais.
 

Aide en ligne de Oracle, déc2021: https://docs.oracle.com/cd/B13789_01/nav/help.htm

 

 

 

Aide mémoire :

 

Transformer le numéro (i1253) en chiffre :
RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Numéro

Cette ligne permettra de faire des tris par ordre numérique.

En ordre numérique
ORDER BY RIGHT(p.personID,(LENGTH(p.personID)-1))+0

Contient le nom Landry
p.lastname LIKE "%Landry%"

 

CONCAT (firstname, " ",lastname)


Mettre un commentaire dans le SQL

/* Liste les Landry centenaires, plus de 99 ans.*/


Numéro des familles
tng_families.familyID     tng_people.famc    tng_children.familyID
 

Numéro des personnes
tng_people.personID    tng_families.husband    tng_families.wife    tng_children.personID
 

 

Exemples de requête:

Ces requêtes ont seulement besoin d'être collées dans la case au bas dans la préparation d'un rapport.

 

En 2017

Permet d'afficher Les Joseph Landry nés au Québec de 1849 à 1853, incluant dates et lieux de naissance, décès et mariages.

Rapport : Joseph 1849-1853 OK

SELECT tng_people.personID, firstname,lastname, birthdate,birthplace,deathdate,deathplace,families1.marrdate,families1.marrplace,
families1.wife as spouse,sex, tng_people.gedcom, nameorder FROM (tng_people ) LEFT JOIN tng_families AS families1 ON (tng_people.gedcom = families1.gedcom AND tng_people.personID = families1.husband ) LEFT JOIN tng_families AS families2 ON (tng_people.gedcom = families2.gedcom AND tng_people.personID = families2.wife ) WHERE (firstname LIKE "%Joseph%" AND sex = "M" AND lastname LIKE "%Landry%" AND birthplace LIKE "%QC%" AND ( birthdate LIKE "%1849%" OR birthdate LIKE "%1850%" OR birthdate LIKE "%1851%" OR birthdate LIKE "%1852%" OR birthdate LIKE "%1853%" )) ORDER BY YEAR(birthdatetr), MONTH(birthdatetr), DAY(birthdatetr)

 

Rapport: Inscrit et date né dans recensement de 1901

SELECT tng_people.personID, firstname,lastname, birthdate, e2.eventdate AS DateNéDansRecens,e1.eventdate as DateRecens, e1.eventplace as LieuRecens, tng_people.gedcom, nameorder FROM (tng_people ) LEFT JOIN tng_events e1 ON tng_people.personID = e1.persfamID AND tng_people.gedcom = e1.gedcom AND e1.eventtypeID = "1" LEFT JOIN tng_events e2 ON tng_people.personID = e2.persfamID AND tng_people.gedcom = e2.gedcom AND e2.eventtypeID = "19" WHERE (e1.eventdate = "1901" AND tng_people.gedcom = "05") ORDER BY YEAR(birthdatetr), MONTH(birthdatetr), DAY(birthdatetr)
 

 

 

 

_____________________________________________________
Rapport : Liste des lieux où je n'ai pas de latitude ou longitude pour Google Map.

 

SELECT place, gedcom, longitude, latitude, notes FROM tng_places WHERE longitude = "" OR latitude="" OR longitude IS NULL OR latitude IS NULL ORDER BY place;

 

_____________________________________________________
Rapport : Liste numérique des Landry d'Amérique.
Description: Liste toutes les personnes dans mon arbre "05" par ordre numérique en excluant les vivants.

SELECT YEAR(p.birthdatetr) AS Année, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Numéro, p.lastname, p.firstname, p.birthdate, p.gedcom
FROM tng_people AS p
WHERE p.lastname LIKE "%Landry%" AND p.sex= "M" AND p.gedcom= "05"
ORDER BY Numéro;
 

_____________________________________________________
Rapport : Classer Landry mâles par année de naissance.
Les personnes dont le nom de famille contient le mot Landry, mâles, par ordre de naissance.  Si vide, l'ordre utilisé est mariage moins 25 ans, si vide n'est pas inscrit. De plus de l'information sur les conjoints.  mon arbre est le "05"


SELECT YEAR(p.birthdatetr) AS Année, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Numéro, p.lastname AS nom1, p.firstname AS Prénom1, p.birthdate, f.marrdate, f.husborder AS No_mariage, p2.firstname AS PrénomConjointe , p2.lastname AS Conjointe
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
WHERE p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1>1 AND p.gedcom= "05" AND p2.gedcom= "05" AND f.gedcom= "05"
UNION
SELECT YEAR(f.marrdatetr)-25 AS Année, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Numéro, p.lastname as Nom1, p.firstname AS Prenom1, p.birthdate, f.marrdate, f.husborder AS No_mariage, p2.firstname AS PrénomConjointe , p2.lastname AS Conjointe
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
WHERE p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1<2 AND p.gedcom= "05" AND YEAR(f.marrdatetr)-25>0 AND p2.gedcom= "05" AND f.gedcom= "05"
UNION
SELECT YEAR(p.birthdatetr) AS Année, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Numéro, p.lastname AS nom1, p.firstname AS Prénom1, p.birthdate, f.marrdate, f.husborder AS No_mariage, p2.firstname AS PrénomConjointe , p2.lastname AS Conjointe
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
WHERE p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1>1 AND p.gedcom= "05" AND f.husborder IS NULL;
ORDER BY Année, Prénom1, Numéro, No_mariage;
 

_____________________________________________________

Rapport : Nombre de fois que sont utilisés les sources.


SELECT s.sourceID AS Numéro, s.shorttitle AS Abréviation, s.title AS Titre, s.author AS Auteur, s.publisher AS Éditeur, s.comments AS Commentaires, s.gedcom AS Arbre, COUNT(*) AS Nombre FROM tng_sources AS s LEFT JOIN tng_citations AS c ON s.sourceID=c.sourceID GROUP BY s.sourceID ORDER BY RIGHT(s.sourceID,(LENGTH(s.sourceID)-1))+0;
 

 

Ce rapport affiche tous les Landry ayant porté le prénom René classés par année de naissance probable
SELECT YEAR(p.birthdatetr) AS Année, p.personID, p.lastname AS Nom, p.firstname AS PréNom, p.birthdate, p.deathdate, CONCAT(p3.firstname," / ",p4.firstname," ",p4.lastname) AS Parents, f.marrdate, f.marrplace, f.husborder AS Mar, CONCAT(p2.firstname, " ",p2.lastname) AS Conjointe, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Num, p.gedcom
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
LEFT JOIN tng_families AS f2 ON p.famc=f2.familyID
LEFT JOIN tng_people AS p3 ON p3.personID=f2.husband
LEFT JOIN tng_people AS p4 ON p4.personID=f2.wife
WHERE p.firstname LIKE "%René%" AND p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1>1 AND p.gedcom= "05" AND p2.gedcom= "05" AND f.gedcom= "05" AND (f2.gedcom="05" OR f2.gedcom IS NULL) AND (p3.gedcom= "05" OR p3.gedcom IS NULL) AND (p4.gedcom= "05" OR p4.gedcom IS NULL)
UNION
SELECT YEAR(f.marrdatetr)-25 AS Année, p.personID, p.lastname as Nom, p.firstname AS PreNom, p.birthdate, p.deathdate, CONCAT(p3.firstname," / ",p4.firstname," ",p4.lastname) AS Parents, f.marrdate, f.marrplace, f.husborder AS Mar, CONCAT(p2.firstname, " ",p2.lastname) AS Conjointe, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Num, p.gedcom
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
LEFT JOIN tng_families AS f2 ON p.famc=f2.familyID
LEFT JOIN tng_people AS p3 ON p3.personID=f2.husband
LEFT JOIN tng_people AS p4 ON p4.personID=f2.wife
WHERE p.firstname LIKE "%René%" AND p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1<2 AND p.gedcom= "05" AND YEAR(f.marrdatetr)-25>0 AND p2.gedcom= "05" AND (f2.gedcom="05" OR f2.gedcom IS NULL) AND (p3.gedcom= "05" OR p3.gedcom IS NULL) AND (p4.gedcom= "05" OR p4.gedcom IS NULL)
UNION
SELECT YEAR(p.birthdatetr) AS Année, p.personID, p.lastname AS Nom, p.firstname AS PréNom, p.birthdate, p.deathdate, CONCAT(p3.firstname," / ",p4.firstname," ",p4.lastname) AS Parents, f.marrdate, f.marrplace, f.husborder AS Mar, CONCAT(p2.firstname, " ",p2.lastname) AS Conjointe, RIGHT(p.personID,(LENGTH(p.personID)-1))+0 AS Num, p.gedcom
FROM tng_people AS p
LEFT JOIN tng_families AS f ON p.personID=f.husband
LEFT JOIN tng_people AS p2 ON p2.personID=f.wife
LEFT JOIN tng_families AS f2 ON p.famc=f2.familyID
LEFT JOIN tng_people AS p3 ON p3.personID=f2.husband
LEFT JOIN tng_people AS p4 ON p4.personID=f2.wife
WHERE p.firstname LIKE "%René%" AND p.lastname LIKE "%Landry%" AND p.sex= "M" AND YEAR(p.birthdatetr)+1>1 AND p.gedcom= "05" AND (f2.gedcom="05" OR f2.gedcom IS NULL) AND (p3.gedcom= "05" OR p3.gedcom IS NULL) AND (p4.gedcom= "05" OR p4.gedcom IS NULL) AND f.husborder IS NULL;
ORDER BY Année, PréNom, Num, Mar;

 

 

 

 

Requêtes pour visionner les champs d'une table
 

tng_events

Select eventID, gedcom, persfamID, eventtypeID, eventdate, eventdatetr, eventplace, age, agency, cause, addressID, parenttag, info
FROM tng_events
ORDER BY eventtypeID
Pour les codes REFN et OCCU l'information est placée dans le champs info.
Pour RESI c'est dans le champs eventplace.

tng_eventtypes
SELECT eventtypeID, tag, description, display, keep, ordernum, type
FROM tng_eventtypes
ORDER BY eventtypeID


 

 

mwl






 

 

 

Au besoin Cliques ici pour m'envoyer un courriel.

Dernière modification : 27 novembre 2021.