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 :

Requête SQL sous PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut Requête SQL sous PHP
    Bonjour,

    Je suis désolé mais ce meme message à été déplacé dans cette partie du forum mais je n'arrive pas a y répondre pour plus de détail. Je dois souligner que je suis vraiment néophite dans la gestion de requête SQL et de PHP.

    Je dois creer une requete sql dans un fichier PHP afin de faire un rapport.
    J'ai trois tables:

    table glpi.computers
    -id
    -computertypes_id
    -locations_id
    - ...

    table glpi.computertypes
    -id
    -name
    -...

    table glpi.locations
    -id
    -completename
    -...

    je souahaite faire un "tri" du nombre de 'glpi.computer' par "glpi.computertypes" -> name
    par "glpi.locations" -> completename

    par exemple:
    locations - type - nombre
    paris - pc - 25
    paris - laptop - 12
    marseille - pc -10

    Voici mon fichier PHP après travail sur la partie Nombre de PC par lieu j'ai besoins d'aide pour le modifier afin de l'avoir par type :

    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
    33
    34
    35
    <?php
    $USEDBREPLICATE= 1;
    $DBCONNECION_REQUIRED= 0;
     
    define('GLPI_ROOT', '../../../..');
    include(GLPI_ROOT."/inc/includes.php");
     
    $report= new PluginReportsAutoReport();
     
     
    $report->setColumns(array(new PluginReportsColumn('entity', $LANG['entity'][0]),
                              new PluginReportsColumn('location', $LANG['common'][15]),
                              new PluginReportsColumnInteger('computernumber',$LANG['Menu'][0])));
     
    $query = "SELECT a.`entity`, a.`location`, b.`computernumber`, a.`id`
                                      FROM (SELECT `glpi_entities`.`completename` AS entity,
                                                   `glpi_locations`.`completename` AS location,
                                                   `glpi_locations`.`id` AS id
                                            FROM `glpi_locations`
                                            LEFT JOIN `glpi_entities`
                                              ON (`glpi_locations`.`entities_id`=`glpi_entities`.`id`) ".
                                            getEntitiesRestrictRequest(" WHERE ", "glpi_locations").") a
                                      LEFT OUTER JOIN (SELECT count(*) AS computernumber,
                                                              `glpi_computers`.`locations_id` AS id
                                                       FROM `glpi_computers`
                                                       WHERE is_deleted=0 AND is_template=0
                                                       ".getEntitiesRestrictRequest(" AND ", "glpi_computers")."
                                                       GROUP BY `glpi_computers`.`locations_id`) b
                                           ON (a.id = b.id)";
     
    $report->setGroupBy("entity");					  
    $report->setSqlRequest($query);			  
    $report->execute();						  
     
    ?>

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    je ne connais pas PluginReportsAutoReport, mais il suffit peut etre de faire un ORDER BY b.`entity` dans la requete.

    sinon, si votre requête est trop complexe a modifier, il reste toujours la solution un peu crado de faire le tri en php sur les résultats de la requete

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut
    Bonjour,

    je reviens vers vous car la demande à changée et je ne m'y retrouve plus en SQL ...

    Citation Envoyé par gototog Voir le message
    je ne connais pas PluginReportsAutoReport, mais il suffit peut etre de faire un ORDER BY b.`entity` dans la requete.
    j'ai effectuer les modifications avec le GROUPby

    Citation Envoyé par gototog Voir le message
    sinon, si votre requête est trop complexe a modifier, il reste toujours la solution un peu crado de faire le tri en php sur les résultats de la requete
    je m'y connais autant en PHP qu'en SQL se qui veut dire rien

    Je récapitule, j'ai maintenant 4 tables :

    table glpi_computers
    -id
    -computertypes_id
    -locations_id
    -groups_id
    - ...

    table glpi_computertypes
    -id
    -name
    -...

    table glpi_locations
    -id
    -completename
    -...

    table glpi_groups
    -id
    -name
    -groups_id
    -...

    il me faudrais quelque chose comme :

    GROUPE - LIEU - TYPE - NOMBRE

    groupe a lieu a type a 1
    groupe a lieu a type b 2
    groupe a lieu b type a 3
    groupe a lieu b type b 4
    groupe b lieu a type a 5
    ...

    soit :
    GROUPE
    glpi_groups.name
    - LIEU
    glpi_location.completename
    TYPE
    glpi_computertypes.name
    - NOMBRE
    x

    j'aimerais que l'on m'aide a monter la requête pour le faire en mettant dedans :

    - Groupe ne comprendras pas 'groupe c' et 'groupe d'
    - Lieu ne comprendras pas 'lieu c' et 'lieu d'
    - type ne comprendras pas 'type c' et 'type d'

    Je suis complètement perdu

    J'arrive juste a comprendre ma précédente requête mais celle la je ne visualise pas grand chose

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut
    Bonjour j'ai avancé sur la requête SQL qui me donne le résultat suivant

    groupe a lieu a type a
    groupe a lieu a type b
    groupe a lieu b type a
    groupe a lieu b type b
    groupe b lieu a type a

    avec :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT glpi_groups.name, glpi_locations.completename, glpi_computertypes.name
    FROM glpi_groups, glpi_locations, glpi_computertypes
    WHERE glpi_groups.name != "Informatique" AND glpi_groups.name != "Infrastructure" AND glpi_groups.name != "Logiciel"
    AND glpi_computertypes.name != "Serveur" AND glpi_computertypes.name != "Virtual machine"
    AND glpi_computertypes.name != "Other" AND glpi_computertypes.name != "Unknown"
    ORDER BY glpi_groups.name

    il me reste plus qu'a utiliser un COUNT pour compter le nombre de pc par type et a lier celui ci pourrait-on m'aider sur ce point ?

  5. #5
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Ah ben ça, typiquement en mysql, c'est group by...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT   count(id) as nb,species
    FROM     menagerie
    GROUP BY species
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut
    bonjour,

    Merci de ta réponse Dendrite, j'ai adapté ta requête dans la mienne et cela donne :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT glpi_groups.name AS groupe, glpi_locations.completename AS lieu, glpi_computertypes.name AS type, COUNT(glpi_computers.id) AS nombre
     
    FROM glpi_groups, glpi_locations, glpi_computertypes, glpi_computers
     
    WHERE glpi_groups.name != "Informatique" AND glpi_groups.name != "Infrastructure" AND glpi_groups.name != "Logiciel"
    AND glpi_computertypes.name != "Serveur" AND glpi_computertypes.name != "Virtual machine"
    AND glpi_computertypes.name != "Other" AND glpi_computertypes.name != "Unknown"
     
    AND (glpi_computers.computertypes_id = glpi_computertypes.id && glpi_computers.locations_id = glpi_locations.id && glpi_computers.groups_id = glpi_groups.id)
     
    GROUP BY glpi_computers.computertypes_id
     
    ORDER BY glpi_groups.name, glpi_locations.completename

    Avec cette nouvelle version de la requête j'ai un problème, c'est le

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY glpi_computers.computertypes_id

    Pourquoi ? Ben parce que en fait il me regroupe les entrées de types d'ordinateur et pour ma part je ne le souhaite pas car je dois avoir quelque chose du genre :

    GROUPE - LIEU - TYPE - NOMBRE

    groupe a lieu a type a 1
    groupe a lieu a type b 2
    groupe a lieu b type a 3
    groupe a lieu b type b 4
    groupe b lieu a type a 5

    Alors que j'ai avec cette requête :


    GROUPE - LIEU - TYPE - NOMBRE

    groupe a lieu a type a 1
    groupe a lieu a type b 2

    Comment puis-je contourner cette difficultée ?

Discussions similaires

  1. requête sql sous access
    Par jadey dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/08/2006, 21h20
  2. [SQL] Editeur de requête SQL en PHP
    Par lodan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/07/2006, 17h55
  3. [SQL] Concaténer des requêtes SQL en PHP
    Par brotelle dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 18/04/2006, 19h53
  4. affichage requête sql sous phppgadmin
    Par kerzut dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/02/2005, 12h39
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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