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

PHP & Base de données Discussion :

PHP MySql - Requete complexe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut PHP MySql - Requete complexe
    Bonjour a tous, ça va!? j'ai une très bonne question pour vous, j'ai construis un outil a mon travail qui fait le répertoire des employés.

    J'ai une table dans ma db (users) qui contient les infos de chaque employés.

    Mon arbre ce fit au numero de l'employé

    Mon arbre ressemble a ça:

    VicePresident (id=1234 managerid=none)
    -DirecteurGeneral (id=5678 managerid=1234)
    --Manager (id=9101112 managerid=5678)
    ---TeamLeader (id=13141516 managerid=9101112)
    ----Technicien (id=17181920 managerid=13141516)

    si je veux afficher tout le monde en dessous du TeamLeader, je fait un query

    SELECT * FROM users WHERE managerid='$managerid' ORDER BY name ASC

    ... simple ...

    mais mon problème c'est si je veux afficher TOUS ceux sous le Manager, au complet, pas juste les teamleaders (Les Teamleaders + Leurs techniciens) comment puis-je faire ma query !? même chose pour tout ceux en dessous de DirecteursGenerals (Managers + TeamLeaders + Techniciens) et VP (DirecteursGenerals + Managers + TeamLeaders + Techniciens).

    En touka, si tu vous savez comment, j'apprécierais énormément! parce que la! je ne sais plus vers ou me diriger.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu peux encore redéfinir ta structure, tu peux être intéressé par ça :
    http://sqlpro.developpez.com/cours/arborescence/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    les arbres intervallaires, dont sqlpro parle ici, sont loin d'être la panacée hormis en cas d'impossibilité de faire de la récursivité... ils ont aussi de gros défauts:
    • le temps d'insertion/suppression est dépendant de l'emplacement du ou des éléments concernés et de la taille de la table
    • les recherches génère des jeux de données qu'il faut interpréter pour construire l'arborescence (tu te tapes donc une récursion ou un traitement similaire de toute façon)
    • ils ne permettent pas sans un gros traitement de ne sortir que n niveaux à partir d'un nœud donné

    dans ton cas, il faut juste faire une récursion soit en php soit en mysql au choix...
    soit "recursion" le nom de la fonction php (ou procédure stockée) qui va parcourir, son algorithme est simple, supposons que "depart" représente l'id du nœud de départ qui est son paramètre:
    • afficher le nœud "depart"
    • lister tous les nœuds qui ont pour parent "depart"
    • pour chaque nœud trouvé, appliquer "recursion" dessus

    ça va te construire automatiquement ton arbre. après tu as le choix du format de sortie (texte avec retrait proportionnel à la profondeur dans l'arbre, xml, etc...)
    tu as intérêt à indexer "managerid"...

    par contre moi j'aurais fait ça différemment:
    • la table qui décrit la structure des entités de l'entreprise
    • la table qui liste le personnel
    • la table qui liste les affectations (qui permet d'avoir un suivit de l'évolution au sein de l'entreprise)
    • la table qui liste les différentes entités (services, lieux, etc)

    l'avantage c'est que ça te donne plus de souplesse et d'optimisation pour les différentes recherche que tu peux avoir à faire
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  4. #4
    Candidat au Club
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut RE
    Un énorme merci!

    J'ai finalement compris!!

    J'ai fais des UNION avec des sub et des top ids !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] php/mysql requete s'executant deux fois
    Par soohikei dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2010, 11h58
  2. Mysql : requete complexe ou multitude de requete ?
    Par serge1973 dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/11/2007, 13h02
  3. [PHP/MySql] requete complexe
    Par jfrag dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/09/2006, 10h16
  4. [php-mysql] Requete gros traitements
    Par antrax2013 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/08/2006, 12h32
  5. requete php mysql
    Par calitom dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/02/2006, 16h24

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