Syntaxe d'un requete SQL

Résolu
Bonjour à tous,

Voila, je suis en train de coder une page en php, j'ai des requêtes sql à effectuer, j'ai crée ma requête, elle me retourne une table vide, j'ai essayé dans phpmyadmin, j'ai exécuté la requête, rien ne s'affiche, alors qu'en théorie il devrait y avoir au moins un enregistrement.
J'ai vérifié le nom de mes tables, ils sont correctement écrits.

SELECT 'glpi_groups.name', 'glpi_cartridges.name'
FROM glpi_groups INNER JOIN glpi_groups_users
ON 'glpi_groups.id' = 'glpi_groups_users.groups_id'
INNER JOIN glpi_users
ON 'glpi_groups_users.users_id'='glpi_users.id'
INNER JOIN glpi_printers
ON 'glpi_users.id' = 'glpi_printers.users_id'
INNER JOIN glpi_cartridges
ON 'glpi_printers.id' = 'glpi_cartridges.printers_id';

Bonne journée à vous,
Dans l'attente de vous lire,
Cordialement,

Nina

3 réponses

  1. Bonjour Nina,

    Es-tu sûre qu'il ne te faille pas une jointure externe plutôt que naturelle?

    0
    1. Je ne sais pas, je suis pas très douée en SQL, on m'a conseillé le INNER JOIN
      0
      1. Normalement, une jointure naturelle est possible
        0
    2. En fait, quand tu construis ta requête, il te faut considérer le cas où :
      - un groupe n'a pas forcément d'utilisateurs
      - un utilisateur n'a pas forcément d'imprimante
      - une imprimante n'a pas forcément de cartouche

      au lieu des inner join, remplace déjà par des LEFT OUTER JOIN ON :

      SELECT 'glpi_groups.name', 'glpi_cartridges.name'
      FROM glpi_groups LEFT OUTER JOIN glpi_groups_users
      ON 'glpi_groups.id' = 'glpi_groups_users.groups_id'
      LEFT OUTER JOIN glpi_users
      ON 'glpi_groups_users.users_id'='glpi_users.id'
      LEFT OUTER JOIN glpi_printers
      ON 'glpi_users.id' = 'glpi_printers.users_id'
      LEFT OUTER JOIN glpi_cartridges
      ON 'glpi_printers.id' = 'glpi_cartridges.printers_id'; 


      avec cette imprimante, tu devrais récupérer tous les enregistrements. Tiens moi au courant des résultats, on verra après quoi faire :)
      0
      1. La requête s'est exécutée, j'ai compris la différence entre une jointure naturelle et jointure externe, mais ça ne m'affiche pas des enregistrement, j'ai un tableau de réponses comme ça :

        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        glpi_groups.name glpi_cartridges.name
        0
      2. C'est normal, enlève les quotes qui encadrent tes noms de champs :)
        0
      3. On m'avait appris à toujours encadré mes champs par des quotes, c'est pour ça, mais là du coup j'ai une autre erreur :

        Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'glpi_cartridges.name' in 'field list'

        EDIT : J'ai trouvé toute seule merci
        0