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 :

Réunir 3 requêtes SQL en une seule [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Par défaut Réunir 3 requêtes SQL en une seule
    Bonjour,

    Voilà j'ai 3 requêtes et je voudrais les réunir en une seule. Je m'explique j'ai une base de données qui va être utilisée à la fois pour la création d'un organigramme et d'un annuaire, ici on parle de la partie annuaire. Je suis en train de réaliser un moteur de recherche et je voudrais afficher toutes les personnes présentes dans la base de données.Voici une image du MLD




    De base toutes les personnes sont dans la table AGENT, cependant on a besoin aussi de savoir dans quel département ils font partis ou dans quelle section(Sachant qu'un département regroupe plusieurs sections) ou dans une équipe(Sachant qu'une section regroupe plusieurs équipes).
    J'utilise MySQL comme SGBD.

    Exemple:
    Furil est un chef de département
    Toto est un chef de section
    Jeanbon est un chef d'équipe

    Voilà les requêtes permettant de lister :
    Les personnes faisant partie d'un service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $requete2 = ('SELECT Lib_agent,No_agent,Lib_departement,Lib_fonction
    			FROM AGENT,AGENT_DEPT,DEPARTEMENT,FONCTION
    			WHERE agent.Id_agent = agent_dept.Id_agent
    			AND agent_dept.Id_departement = departement.Id_departement
    			AND agent.Id_fonction = fonction.Id_fonction
    			');
    Les personnes faisant partie d'une section sachant qu'une section fait partie d'un département :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $requete3 = ('SELECT Lib_agent,No_agent,Lib_departement,Lib_section,Lib_fonction
    			FROM AGENT,AGENT_SECTION,SECTION,DEPARTEMENT,FONCTION
    			WHERE agent.Id_agent = agent_section.Id_agent
    			AND agent_section.Id_section = section.Id_section
                            AND section.Id_departement = departement.Id_departement
    			AND agent.Id_fonction = fonction.Id_fonction
    			');
    Enfin les personnes faisant partie d'une équipe sachant qu'une équipe fait partie d'une section :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $requete4 = ('SELECT Lib_agent,No_agent,Lib_departement,Lib_section,Lib_equipe,Lib_fonction
    			FROM AGENT,AGENT_EQUIPE,EQUIPE,SECTION,SERVICE,FONCTION
    			WHERE agent.Id_agent = agent_equipe.Id_agent
    			AND agent_equipe.Id_equipe = equipe.Id_equipe
                            AND equipe.Id_section = section.Id_section
                            AND section.Id_departement=departement.Id_departement
    			AND agent.Id_fonction = fonction.Id_fonction
    			');
    J'ai déjà fait le script fonctionnel qui affiche le tableau selon la requête exécuté lors de la recherche. Ce que j'aimerai c'est qu'avant que la recherche soit effectuée, qu'un tableau soit affiché, répertoriant toutes les personnes donc ici Furil, Toto et Jeanbon les un en dessous des autres avec toutes les informations qui vont avec donc dans quel département, service ou/et équipe ils font partie.

    Vu qu'il y a des ajout de champs d'une requête à une autre UNION n'est pas envisageable.

    Voilà j'espère avoir bien expliqué, s'il y a d'autres choses à expliquer je le ferai avec plaisir !

    Je vous remercie d'avance et vous souhaite une bonne journée.

  2. #2
    Membre éclairé Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Par défaut
    Salut

    Si si tu peux utiliser le UNION
    tu donne simplement une valeur fixe au champs qui n'existent pas

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SELECT Lib_agent,No_agent,Lib_departement,'xx' as Lib_section, 'xx' as Lib_equipe,Lib_fonction
    	FROM AGENT,AGENT_DEPT,DEPARTEMENT,FONCTION
    	WHERE agent.Id_agent = agent_dept.Id_agent
    	AND agent_dept.Id_departement = departement.Id_departement
    	AND agent.Id_fonction = fonction.Id_fonction
    UNION
    SELECT Lib_agent,No_agent,Lib_departement,Lib_section, 'xx' as Lib_equipe, Lib_fonction
    	FROM AGENT,AGENT_SECTION,SECTION,DEPARTEMENT,FONCTION
    	WHERE agent.Id_agent = agent_section.Id_agent
    	AND agent_section.Id_section = section.Id_section
            AND section.Id_departement = departement.Id_departement
    	AND agent.Id_fonction = fonction.Id_fonction
    UNION
    SELECT Lib_agent,No_agent,Lib_departement,Lib_section,Lib_equipe,Lib_fonction
    	FROM AGENT,AGENT_EQUIPE,EQUIPE,SECTION,SERVICE,FONCTION
    	WHERE agent.Id_agent = agent_equipe.Id_agent
    	AND agent_equipe.Id_equipe = equipe.Id_equipe
            AND equipe.Id_section = section.Id_section
            AND section.Id_departement=departement.Id_departement
    	AND agent.Id_fonction = fonction.Id_fonction

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Par défaut
    Salut bourvil,

    Un grand merci ça marche

    Bonne journée !

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

Discussions similaires

  1. [SQL] En une seule requête
    Par Spaccio dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/06/2006, 20h38
  2. [sql] Retourner une seule ligne..
    Par b_lob dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/05/2006, 15h15
  3. [D5][BDE][Multibase] Récupérer les requêtes SQL d'une TTable
    Par Escandil dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2006, 14h29
  4. [requète sql] Créer une vue ordonnée
    Par gangsoleil dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/01/2006, 18h34
  5. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35

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