Syntaxe d'un requete SQL [Résolu/Fermé]

Signaler
-
 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

Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
99
Bonjour Nina,

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

Je ne sais pas, je suis pas très douée en SQL, on m'a conseillé le INNER JOIN
Normalement, une jointure naturelle est possible
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
99
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 :)
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
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
99
C'est normal, enlève les quotes qui encadrent tes noms de champs :)
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