Syntaxe d'un requete SQL

Résolu/Fermé
Nina - Modifié par Nina le 18/10/2011 à 14:47
 Nina - 19 oct. 2011 à 10:58
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

Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
18 oct. 2011 à 14:49
Bonjour Nina,

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

0
Je ne sais pas, je suis pas très douée en SQL, on m'a conseillé le INNER JOIN
0
Normalement, une jointure naturelle est possible
0
Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
18 oct. 2011 à 14:55
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
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
Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
19 oct. 2011 à 10:55
C'est normal, enlève les quotes qui encadrent tes noms de champs :)
0
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