Syntaxe d'un requete SQL

Résolu
Nina -  
 Nina -
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. Heremion Messages postés 564 Statut Membre 102
     
    Bonjour Nina,

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

    0
  2. Nina
     
    Je ne sais pas, je suis pas très douée en SQL, on m'a conseillé le INNER JOIN
    0
    1. Nina
       
      Normalement, une jointure naturelle est possible
      0
  3. Heremion Messages postés 564 Statut Membre 102
     
    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. Nina
       
      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. Heremion Messages postés 564 Statut Membre 102
       
      C'est normal, enlève les quotes qui encadrent tes noms de champs :)
      0
    3. Nina
       
      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