IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Généalogie: classer les fratries par ordre de naissance


Sujet :

MySQL

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut Généalogie: classer les fratries par ordre de naissance
    Bonjour à tous,

    La base de données comprend entre autres les colonnes id, birth_date et birth_order. Le propre d'une généalogie est d'être obligatoirement incomplète. Pour une même fratrie, on peut donc avoir:
    • Toutes les dates de naissance,
    • L'ordre des naissances,
    • Un mixte des deux

    Il s'agit donc, dans la mesure du possible, de classer au mieux.
    J'ai actuellement la clause suivante ORDER BY birth_date ASC, birth_order ASC.

    Une difficulté complémentaire se trouve dans la date de naissance. Lorsqu'elle est incomplète (année uniquement ou année + mois), ne pas considérer qu'il s'agit du 1er janvier ou du 1er du mois. Exemple:
    Marie est née en 1858, comment enregistrer sa date de naissance pour qu'on sache que la date est approximative et non pas 1858-01-01.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Marie est née en 1858, comment enregistrer sa date de naissance pour qu'on sache que la date est approximative et non pas 1858-01-01.
    Pour le coup il pourrait être pertinent d'éclater année/mois/jour dans des colonnes différentes et d'utiliser NULL lorsque la valeur est inconnue.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 394
    Points : 39 918
    Points
    39 918
    Billets dans le blog
    9
    Par défaut
    Si la source permet de déterminer la qualité de la date de naissance (fiable, estimée...) alors on peut utiliser une colonne consacrée qui permettra de savoir ce qu'il en est, puis utiliser un CASE dans la clause ORDER BY

  4. #4
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 857
    Points : 1 642
    Points
    1 642
    Par défaut
    Citation Envoyé par moimp Voir le message
    Une difficulté complémentaire se trouve dans la date de naissance. Lorsqu'elle est incomplète (année uniquement ou année + mois), ne pas considérer qu'il s'agit du 1er janvier ou du 1er du mois. Exemple:
    Marie est née en 1858, comment enregistrer sa date de naissance pour qu'on sache que la date est approximative et non pas 1858-01-01.
    A ma connaissance, seul Mysql est "capable" d'avoir une date incomplète.
    Et, d'expérience, ce n'est pas évident pour autant
    Voir : https://dev.mysql.com/doc/refman/8.4...RO_DATE%20mode.
    MySQL permits you to store dates where the day or month and day are zero. This is convenient if you want to store a birthdate in a DATE column and you know only part of the date. To disallow zero month or day parts in dates, enable the NO_ZERO_IN_DATE mode.

    Citation Envoyé par moimp Voir le message
    La base de données comprend entre autres les colonnes id, birth_date et birth_order. Le propre d'une généalogie est d'être obligatoirement incomplète. Pour une même fratrie, on peut donc avoir:
    • Toutes les dates de naissance,
    • L'ordre des naissances,
    • Un mixte des deux

    Il s'agit donc, dans la mesure du possible, de classer au mieux.
    J'ai actuellement la clause suivante ORDER BY birth_date ASC, birth_order ASC.
    Si on sait facilement déterminer les membres d'une fratrie alors les fonctions de fenêtrage vont vous sauver
    https://dev.mysql.com/doc/refman/8.4...criptions.html

    les fonctions LEAD et LAG vont vous permettre de lire les données des ainés, cadets.
    Ainsi si la date de naissance n'est pas connue, on sait afficher [est né(e) avant] et [est né(e) après] en fonction de informations connues de la fratrie (et se rappeler qu'en dehors des jumeaux, il y a au moins 6 mois d'écart au strict minimum ^^)
    Le savoir est une nourriture qui exige des efforts.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut
    Merci pour toutes vos remarques ou conseils. Je dois faire ma cuisine pour les digérer et en tirer la quintessence.

Discussions similaires

  1. [DATA] Classer les variables par ordre alphabétique dans une table
    Par alers dans le forum SAS Base
    Réponses: 5
    Dernier message: 11/03/2015, 15h40
  2. Classer les fichiers par ordre
    Par fabricen26 dans le forum Linux
    Réponses: 2
    Dernier message: 09/05/2014, 09h53
  3. Réponses: 2
    Dernier message: 17/06/2007, 20h17
  4. Classer les procédures par ordre alphabétique
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/02/2007, 22h22
  5. [MySQL] Classer des résultats par ordre alphabétique
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/07/2006, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo