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 SQL Discussion :

Requête SQL SELECT double résultats


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Par défaut Requête SQL SELECT double résultats
    Bonjour,

    Je me permets de laisser un message ici car je bloque depuis pas mal de temps sur une requête qui fonctionne parfaitement mais à l'ajout d'un élément j'obtiens un double résultat, étant débutant PHP/SQL je ne sais pas trop comment résoudre ça...

    La requête va chercher dans une base de données GLPI les éléments que je veux, tout fonctionne, mais lorsque je rajoute les moniteurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      LEFT OUTER JOIN glpi_computers_items
          ON glpi_computers.id = glpi_computers_items.computers_id
        LEFT OUTER JOIN glpi_monitors
          ON glpi_computers_items.items_id = glpi_monitors.id
    Mes résultats sont bons mais d'une part en affichage la requête ne sort qu'un moniteur sur les deux si il y en a deux et lorsqu'il y en a deux cela double mes résultats pour computermacname

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP_CONCAT(glpi_networkports.name,' | ',glpi_networkports.mac) as computermacname
    Voici la requête complète

    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
    SELECT glpi_computers.name as computername, 
             glpi_computers.id as computerid, 
             glpi_computers.serial as computerserial, 
             glpi_computers.contact as personne, 
             glpi_documents.id as documentid, 
             glpi_documents_items.items_id as itemid, 
             glpi_documents.id as docid, 
             glpi_documents.filename as filename, 
             glpi_documents.filepath as filepath, 
             glpi_computers_items.itemtype as moniteurs1,
             glpi_monitors.name as moniteurs2,
             glpi_plugin_fusioninventory_agents.last_contact as contact,
             glpi_plugin_fusioninventory_inventorycomputercomputers.remote_addr as ip,
             GROUP_CONCAT(glpi_networkports.name,' | ',glpi_networkports.mac) as computermacname
        FROM glpi_computers
        INNER JOIN glpi_plugin_fusioninventory_agents 
          ON glpi_computers.id = glpi_plugin_fusioninventory_agents.computers_id 
        LEFT OUTER JOIN glpi_documents_items 
          ON glpi_computers.id = glpi_documents_items.items_id
        LEFT OUTER JOIN glpi_documents 
          ON glpi_documents.id = glpi_documents_items.documents_id
        LEFT OUTER JOIN glpi_networkports 
          ON glpi_computers.id = glpi_networkports.items_id
        LEFT OUTER JOIN glpi_computers_items
          ON glpi_computers.id = glpi_computers_items.computers_id
        LEFT OUTER JOIN glpi_monitors
          ON glpi_computers_items.items_id = glpi_monitors.id
        LEFT OUTER JOIN glpi_plugin_fusioninventory_inventorycomputercomputers
          ON glpi_computers.id = glpi_plugin_fusioninventory_inventorycomputercomputers.computers_id
        WHERE glpi_computers.name $like
        GROUP BY glpi_computers.id
        ORDER BY glpi_computers.id ASC
    Je ne sais pas si j'ai été clair concernant ce problème mais je vous remercie d'avance si quelqu'un a la gentillesse de me donner un coup de pouce !

    Bonne journée !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Bonjour,

    À partir de cette phrase, j'ai eu du mal à comprendre :

    Citation Envoyé par Jenjak25 Voir le message
    la requête ne sort qu'un moniteur sur les deux si il y en a deux et lorsqu'il y en a deux cela double mes résultats pour computermacname
    Au survol de la requête, je peux seulement dire que le SGBD utilisé est MySQL puisqu'il est le seul à autoriser que la liste des colonnes définies dans la clause GROUP BY ne soit pas en cohérence avec celles de la clause SELECT et permette ainsi de retourner des résultats aléatoires donc potentiellement erronés.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Par défaut
    C'est exactement ce que je suis en train de voir, j'ai des résultats qui ne sont en fait pas les bons à partir des moniteurs, du coup je ne comprends plus grand chose...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Par défaut
    Alors effectivement en enlevant le group by j'ai tous mes résultats et après vérification c'est ok, par contre j'ai maintenant une ligne par résultat

    Par exemple si deux moniteurs:

    - 1 ligne moniteur 1
    - 1 ligne moniteur 2

    A l'affichage je n'ai plus rien de groupé, d'où le group by que j'avais utilisé un peu sans savoir, est-ce qu'il y a possibilité de faire sans ?

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il faudrait déjà savoir ce que tu veux afficher lorsqu'il y a deux moniteurs...
    D'ailleurs, peut-il y en avoir plus de deux ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Par défaut
    Pour chaque PC je veux en fait afficher les infos en 1 seule ligne

    l'id, le nom, la dernière connexion, l'ip, les adresses mac, le numéro de série et le ou les écrans, il peut y en avoir de 1 à 3 mais ça reste exceptionnel pour 3

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

Discussions similaires

  1. Mettre le résultat d'un requête SQL Select dans un fichier
    Par youssefcss dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 16/10/2018, 17h39
  2. Ma requête SQL SELECT ne passe pas dans next()
    Par Somato dans le forum Bases de données
    Réponses: 17
    Dernier message: 02/06/2008, 15h45
  3. Enregistrer une requête SQL SELECT sous VB Express
    Par Invité dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/01/2008, 09h04
  4. [Requête/SQL]selection toutes colonnes sauf une
    Par alcabk dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/04/2007, 09h01
  5. Réponses: 3
    Dernier message: 11/01/2006, 18h35

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