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

Langage PHP Discussion :

Calculer et afficher nombre de présence dans un pedigree.


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Calculer et afficher nombre de présence dans un pedigree.
    Bonjour,
    Je suis un passionné des oiseaux et j'ai créé un suivi de mon élevage et mes pedrigrees.
    Je souhaite mettre en place un tableau pour afficher le % de présence de sang de chaque pére/mére du pedigree du canari pour éviter la consanguinité.

    Voila mon exemple :
    Nom : mini_508153exemple.png
Affichages : 115
Taille : 10,7 Ko

    On peut se baser sur cette structure de table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create table oiseaux(
    id int AUTO_INCREMENT,
    numero varchar(100),
    annee varchar(100),
    ideleveur varchar(100),
    pere varchar(100),
    mere varchar(100),
    idcanari varchar(100),
    PRIMARY KEY(id)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    insert into oiseaux (numero,annee,ideleveur,pere,mere,idcanari)
    values
    ('002', '2016','AA01','010-2015-BB01','005-2015-BA02','002-2016-AA01'),
    -- Pere 1
    ('010', '2015','BB01','011-2014-BB01','015-2014-BA02','010-2015-BB01'),
    -- Grand Mere 1
    ('015', '2014','BA02',null,null,'015-2014-BA02'),
    -- Mere 1
    ('005', '2015','BA02','011-2014-BB01','016-2014-BA02','005-2015-BA02'),
    -- Grand Mere 2
    ('016', '2014','BA02',null,null,'016-2014-BA02'),
    -- Grand Pere commun
    ('011', '2014','BB01',null,null,'011-2014-BB01');
    Je sais que je dois mettre en place une fonction récursive mais je n'arrive pas.
    Merci pour votre aide.

    (PHP 7 et MySQL 5.5)

  2. #2
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Il te faut essayer quelque chose. Partant de cela, tu auras des suggestions (aides).
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Salut, mysql ne fait pas le sql récursif, tu vas devoir le gérer à la main, ce qui va te consommer un peu de perf si tu as beaucoup de générations

    mais je pense que ton probleme est mal posé, ce que tu as besoin de trouver ce sont tous les ancentres commun sur n génération. Si par exemple tu fouille sur 4 générations (parent, gd parent, arriere gd parent et leurs propre parents) ça tu peux le faire en 1 requete avec 4 autojointure (jointure de la table sur elle meme.

    Cette requete te sort toute la généalogie de tes reproducteurs. Tu suis?

    Ensuite c'est facile, un group by sur l'identifiant du canary => ça te donne 1 si l'ancetre n'est présent qu'une seule fois, 2 s'il est déjà commun à deux ancêtre et 3 ou 4 si t'es tres consanguin.

    Apres ça marchera bien si tu reproduis les générations entres elles un pere et sa fille. par contre si tu veux savoir combien de génération se sont écoulée depuis le dernier ancetre commun, le group by se complexifie (faut trainer un identifant de génération dans tes autojointures) et des min() et max sur ses valeurs.

    Quand tu construits ta requetes, tu ajoutes génération par génération hein ?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2017, 16h57
  2. Réponses: 0
    Dernier message: 10/07/2013, 09h01
  3. Champs calculés vide affiche #Nombre
    Par anelinette dans le forum IHM
    Réponses: 3
    Dernier message: 11/05/2010, 11h01
  4. Calcul d'un nombre de caractères dans une chaîne
    Par Thekiller dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2010, 23h21
  5. [JpGraph] Afficher nombre après virgule dans un diagramme
    Par fey dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/12/2008, 23h59

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