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 :

double requete afficher les données communes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut double requete afficher les données communes
    Hello,
    Le titre n'est pas tres explicite mais en fait c'est très simple.

    J'ai 2 requetes :

    Une requete qui selectionne toutes mes applications dans ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql = ("SELECT * FROM application");
    $query=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    while ($result = mysql_fetch_assoc($query))	
    {
    $ID_APPOK = $result["ID_APP"];
    $NAME_APPOK = $result["NAME_APP"];
    echo $ID_APPOK.' '.$NAME_APPOK.'<br>';
    }
    Ce qui va m'afficher le total de mes applications :

    TOTAL APP :

    1 APP1
    2 APP2
    3 APP3
    4 APP4
    5 APP5
    6 APP6

    Une deuxième requete qui va lister pour un serveur donné, les applications associées :

    Code : 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
     
    $sql2 = ("
    select SERVER.ID_SERVER, SERVER.NAME_SERVER, APPLICATION.ID_APP, APPLICATION.NAME_APP
    FROM SERVER, APPLICATION, HOST
    WHERE SERVER.ID_SERVER=HOST.ID_SERVER
    AND APPLICATION.ID_APP=HOST.ID_APP
    AND SERVER.NAME_SERVER = '$NAME_SERVER';
    ");
     
    $query2=mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());	
    while ($result2 = mysql_fetch_assoc($query2))
    {
    $ID_APPOK2 = $result2["ID_APP"];
    $NAME_APPOK2 = $result2["NAME_APP"];
    echo $ID_APPOK2.' '.$NAME_APPOK2.'<br>';
    }
    Ce qui va m'afficher pour mon serveur $NAME_SERVER' (EX : SRVDEMO) les applications liées à celui-ci :

    APP HEBERGEES SUR SRVDEMO :

    1 APP1
    4 APP4
    5 APP5

    Jusque la pas de problème.

    Ce que je voudrais c'est afficher ma liste totale des applications et lorsque qu'une application est liée à mon serveur afficher un OK par exemple.

    SRVDEMO :

    1 APP1 OK
    2 APP2
    3 APP3
    4 APP4 OK
    5 APP5 OK
    6 APP6

    A mon avis il faut faire une boucle mais je ne vois pas où la placer ....

    Un peu d'aide svp ... Merci d'avance .....

  2. #2
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    faire une seule equête "left join" et vérifier si la valeur est null
    exemple

    table APP
    ID APP
    1 APP1
    2 APP2
    3 APP3
    4 APP4
    5 APP5

    table SERVER:
    ID SERVER APP
    1 SERV1 APP1
    2 SERV2 APP3
    3 SERV3 APP5

    la requête:
    SELECT
    APP.APP
    ,if(isnull(SERVER.SERVER),"","OK") as STAT
    FROM
    APP
    left join
    SERVER
    on
    APP.APP = SERVER.APP

    le résultat
    APP STAT
    APP1 OK
    APP2
    APP3 OK
    APP4
    APP5 OK

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    Merci patrick pour ta réponse ...

    La syntaxe ne fonctionne pas sous mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
    APPLICATION.NAME_APP
    ,if(isnull(SERVER.NAME_SERVER),"","OK") as STAT
    FROM 
    APPLICATION
    left join 
    SERVER
    on 
    APPLICATION.NAME_APP = SERVER.NAME_APP;
    Une idée ou je dois revoir mes cours ? merci !!!!!!!!!!

  4. #4
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    évidement ma requête ne fonctionne qu'avec les tables (minimalistes) que je décris , tu dois adapter le principe à tes tables. (mais j'ai testé sous mysql et cela fonctionne)

    SELECT
    la_colonne_avec_le_nom_de_l'application
    ,if(isnull(table_des_serveurs.colonne_du_nom_de_serveur),"","OK") as STAT
    FROM
    table_des_applications
    left join
    table_des_serveurs
    on
    table_des_applications.colonne_de_l_id_de_l_application = table_des_serveurs.colonne_de_l_id_de_l_application

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    ok donc j'ai mes 3 tables : SERVER, APPLICATION + HOST pour relier les deux :

    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    CREATE TABLE SERVER (
    ID_SERVER INT NOT NULL AUTO_INCREMENT,
    NAME_SERVER  VARCHAR(50) NOT NULL,
    DESC_SERVER VARCHAR(500),
    COM_SERVER VARCHAR(500),
    DATE_SERVER TIMESTAMP NOT NULL DEFAULT NOW(),
    IP_REQ_SERVER VARCHAR(50),
    PRIMARY KEY (ID_SERVER),
    UNIQUE KEY (NAME_SERVER)
    );
     
    CREATE TABLE APPLICATION (
    ID_APP INT NOT NULL AUTO_INCREMENT,
    NAME_APP VARCHAR(50) NOT NULL,
    DESC_APP VARCHAR(500),
    DOC_APP VARCHAR(500),
    COM_APP VARCHAR(500),
    CODE_APP VARCHAR(500),
    DATE_APP TIMESTAMP NOT NULL DEFAULT NOW(),
    IP_REQ_APP VARCHAR(50),
    PRIMARY KEY (ID_APP),
    UNIQUE KEY (NAME_APP)
    );
     
    CREATE TABLE HOST (
    ID_SERVER INT NOT NULL,
    ID_APP INT NOT NULL,
    FOREIGN KEY (ID_SERVER) REFERENCES SERVER(ID_SERVER),
    FOREIGN KEY (ID_APP) REFERENCES APPLICATION(ID_APP),
    PRIMARY KEY (ID_SERVER, ID_APP)
    );
    SERVER
    +-----------+-------------+
    | id_server | name_server |
    +-----------+-------------+
    | 1 | AUCUN |
    | 2 | SRVDEMO |
    | 4 | SRVTATA |
    | 3 | SRVTOTO |
    +-----------+-------------+

    APPLICATION
    +--------+----------+
    | id_app | name_app |
    +--------+----------+
    | 2 | APP1 |
    | 3 | APP2 |
    | 4 | APP3 |
    | 5 | APP4 |
    | 6 | APP5 |
    | 7 | APP6 |
    | 1 | AUCUN |
    +--------+----------+

    HOST
    +-----------+--------+
    | ID_SERVER | ID_APP |
    +-----------+--------+
    | 2 | 2 |
    | 3 | 3 |
    | 4 | 3 |
    | 3 | 4 |
    | 2 | 5 |
    | 2 | 6 |
    | 4 | 6 |
    +-----------+--------+



    Comment faire ma requete qui va bien ?

    Ce que je voudrais c'est afficher ma liste totale des applications et lorsque qu'une application est liée à mon serveur afficher un OK par exemple.

    SRVDEMO :

    1 AUCUN
    2 APP1 OK
    3 APP2
    4 APP3
    5 APP4 OK
    6 APP5 OK
    7 APP6

    SI tu as la syntaxe je suis preneur car la je suis complètement bloqué ...

    Merci d'avance encore une fois

  6. #6
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT
    APPLICATION.NAME_APP
    ,APPLICATION.ID_APP
    ,T1.NAME_SERVER
    ,if(isnull(T1.NAME_SERVER),"","OK") as STAT
    FROM
    APPLICATION
    left join
    (SELECT  SERVER.NAME_SERVER , HOST.ID_APP FROM `HOST`,SERVER WHERE  HOST.ID_SERVER=SERVER.ID_SERVER) AS T1
    on
    APPLICATION.ID_APP = T1.ID_APP
    resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    NAME_APP   ID_APP       NAME_SERVER      STAT
    APP1 	   2 	        SRVDEMO          OK
    APP2 	   3 	        SRVTOTO          OK
    APP2 	   3 	        SRVTATA          OK
    APP3 	   4  	        SRVTOTO          OK
    APP4 	   5  	        SRVDEMO          OK
    APP5 	   6  	        SRVDEMO          OK
    APP5 	   6 	        SRVTATA          OK
               1            NULL	
    APP6 	   7  	        NULL
    j'ai ajouté comme données pour tester
    les données de ton post
    + APP6 avec ID=7
    + SRV_FAKE avec ID=5
    pour avoir une application et un server qui ne sont pas liés par HOST

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/08/2009, 14h43
  2. [SQL] Afficher les données d'une requete SQL
    Par griese dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/06/2006, 11h22
  3. [Excel] Comment afficher les données d'un fichier Excel (PHP)
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/05/2006, 15h01
  4. Réponses: 6
    Dernier message: 06/04/2006, 20h52
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53

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