Posez votre question Signaler

Syntaxe d'un requete SQL [Résolu]

Nina - Dernière réponse le 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
Lire la suite 

Syntaxe d'un requete SQL »

7 réponses
Réponse
+0
moins plus
Bonjour Nina,

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

Ajouter un commentaire
Réponse
+0
moins plus
Je ne sais pas, je suis pas très douée en SQL, on m'a conseillé le INNER JOIN
Nina - 18 oct. 2011 à 14:54
Normalement, une jointure naturelle est possible
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Nina - 19 oct. 2011 à 10:51
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
Heremion- 19 oct. 2011 à 10:55
C'est normal, enlève les quotes qui encadrent tes noms de champs :)
Nina - 19 oct. 2011 à 10:58
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
Ajouter un commentaire
Ce document intitulé « Syntaxe d'un requete SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?