Requêtes SQL - AliaBrah/militants_droit_femmes GitHub Wiki

Cette page a pour but d'exposer les requêtes SQL posées à notre base de données qui sont pertinentes pour répondre aux interrogations de notre recherche. Toute requête peut être transformée en "vue", grâce à la commande mise avant le script SQL "CREAT VIEW ... as". Les requêtes qui sont exposées ci-dessous ont toutes été transformée en vue et se trouvent dans la base de données.

Requêtes pour répondre à la problématique principale

Sélection de toutes personne ayant eu le grade du master trié par pays de naissance

SELECT p.nom , p.prénom , d.nom as degre , d2.nom as discipline, e.nom as etablissement, fp.date_debut, fp.date_fin, n.date as date_naissance, p2.nom  as pays_de_naissance 
FROM personne p 
 JOIN formation_professionnelle fp
  ON (p.pk_personne = fp.fk_personne) -- jointure table personne et table poursuite de la formation
 JOIN degre d 
  ON (d.pk_degre = fp.fk_degre) -- jointure table pousite formation et degré de formation
 JOIN etablissement e 
  ON (e.pk_etablissement = fp.fk_etablissement) -- jointure table poursuite formation et l'établissement de formation
 JOIN discipline d2 
  ON (d2.pk_discipline = fp.fk_discipline) -- jointure table pousuite formation et la discipline étudiée
 JOIN naissance n
  ON (p.pk_personne = n.fk_personne_enfant) -- jointure table personne et naissance
 JOIN pays p2
  ON (n.fk_pays_naissance_type = p2.pk_pays) -- jointure table pays à la table de la naissance
WHERE d.nom = 'Master'
ORDER BY p2.nom ;

Cette requête a été exportée en fichier CSV.

Personnes militant pour le droit des femmes qui sont fondatrices d'association et qui militent via celle-ci, trié par l'année de création de l'organisation

SELECT p2.nom, p2.prénom, o.nom as nom_organisation, o.annee_de_creation as fondation_organisation, tm.nom as medium_d_expression, p.nom as pays_de_naissance
FROM  membre m 
 JOIN personne p2 -- table membre organisation et personne  
  ON (m.fk_personne = p2.pk_personne) -- jointure personne et membre 
 JOIN organisation o  -- table membre organisation et personne  
  ON (m.fk_organisation  = o.pk_organisation) -- membre et organisation
JOIN activite a 
  ON (a.fk_organisation = o.pk_organisation) -- jointure activité militante et l'organisation
JOIN militantisme m2 
  ON (a.fk_militantisme = m2.pk_militantisme) -- jointure activité militante à type de militantisme
JOIN type_militantisme tm 
 ON (m2.fk_type_militantisme = tm.pk_type_militantisme) -- jointure le militantisme au type d'expression
JOIN naissance n
  ON (p2.pk_personne = n.fk_personne_enfant) -- jointure personne et naissance 
JOIN pays p 
  ON (n.fk_pays_naissance_type = p.pk_pays) -- jointure pays et la naissance cela dans le but de faire apparaître le pays de naissance
WHERE m.fk_role = "1" AND a.fk_organisation NOTNULL -- conditions qui sont que le rôle doit être fondatrice et militantisme via l'organisation 
ORDER BY o.annee_de_creation ;

Pour aller plus loin

Requête qui démontre qui a un père avocat dans les militant.e.s, trié par nom

SELECT p.prénom, p.nom, m.nom as nom_metier_pere
FROM personne p 
JOIN naissance n 
  ON (p.pk_personne = n.fk_personne_enfant) -- jointure table naissance et personne
 JOIN pousuite_m pm 
  ON (n.fk_personne_père = pm.fk_personne) -- jointure table naissance et métier du père
 JOIN metier m 
   ON (pm.fk_metier  = m.pk_metier) -- jointure poursuite métier avec le métier
WHERE m.nom = 'Avocat.e' 
ORDER BY p.nom;

Personnes qui militent grâce à la production écrite, trié par pays

SELECT p.nom , p.prénom , n.date as date_naissance, p2.nom as pays_naissance, a.annee_debut as premiere_annee_publication, tm.nom as medium, m.theme
FROM personne p 
JOIN naissance n 
	ON (p.pk_personne = n.fk_personne_enfant) -- jointure personne et naissance
JOIN pays p2 
	ON (p2.pk_pays = n.fk_pays_naissance_type) -- jointure naissance et pays
JOIN activite a 
	ON (p.pk_personne = a.fk_personne) -- jointure entre activité militante et personne
JOIN militantisme m 
	ON (a.fk_militantisme = m.pk_militantisme) -- jointure militantisme et l'activité 
JOIN type_militantisme tm 
	ON (tm.pk_type_militantisme = m.fk_type_militantisme) -- jointure table militantisme et type de militantisme
WHERE (tm.nom = 'Journal') OR (tm.nom = 'Livre')
ORDER BY p2.nom ;