Probleme redaction requete SQL
Résolu
Sissou1970
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Sissou1970 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Sissou1970 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me permets de faire appel à votre aide car j'ai un problème de rédaction de requête SQL. Je suis en train d'essayer d'apprendre à rédiger des requêtes SQL et cela fait 2 semaines que je planche dessus sans parvenir à un résultat correct.
Je travaille sur une base de donnée qui contient 4 tables que je souhaite associer entre elles :
-Table 1 : BaseProduits contient Numero (qui correspond à un produit), IDAtelier (sous forme de numero qui correspond à un atelier de fabrication), IDLieuDeStockage par defaut sous forme de numero qui correspond à un endroit de stockage)
-Table 2 : Produits contient Numero, Code et Libelle (le numero correspond à celui de la table 1)
-Table 3 : Ateliers contient Numero et Libelle (le numero correspond à l'IDAtelier de la table 1)
-Table 4 : LieuxDeStockage contient Numero et Libelle (le numero correspond à l'IDLieuDeStockagede la table 1)
Ce que je souhaite, c'est lier ces 4 tables afin d'obtenir les infos de la table 1 sous forme de Libelle et non de numero.
J'arrive à lier 2 tables entre elles :
-Lier les 2 tables BaseProduits et Produits
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle, BaseProduits.IDAtelier
FROM BaseProduits
JOIN Produits
ON BaseProduits.Numero = Produits.Numero
-Lier les 2 tables BaseProduits et Ateliers
SELECT BaseProduits.Numero, BaseProduits.IDAtelier, Ateliers.Libelle
FROM BaseProduits
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
J'obtiens les différents libelles qui m'interessent, mais lorsque j'essaie d'en lier 3, la requête ne m'affiche que le libellé du produit :
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle, BaseProduits.IDAtelier, Ateliers.Libelle
FROM BaseProduits
JOIN Produits
ON Produits.Numero = BaseProduits.Numero
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
Je vous remercie par avance pour votre aide.
Je me permets de faire appel à votre aide car j'ai un problème de rédaction de requête SQL. Je suis en train d'essayer d'apprendre à rédiger des requêtes SQL et cela fait 2 semaines que je planche dessus sans parvenir à un résultat correct.
Je travaille sur une base de donnée qui contient 4 tables que je souhaite associer entre elles :
-Table 1 : BaseProduits contient Numero (qui correspond à un produit), IDAtelier (sous forme de numero qui correspond à un atelier de fabrication), IDLieuDeStockage par defaut sous forme de numero qui correspond à un endroit de stockage)
-Table 2 : Produits contient Numero, Code et Libelle (le numero correspond à celui de la table 1)
-Table 3 : Ateliers contient Numero et Libelle (le numero correspond à l'IDAtelier de la table 1)
-Table 4 : LieuxDeStockage contient Numero et Libelle (le numero correspond à l'IDLieuDeStockagede la table 1)
Ce que je souhaite, c'est lier ces 4 tables afin d'obtenir les infos de la table 1 sous forme de Libelle et non de numero.
J'arrive à lier 2 tables entre elles :
-Lier les 2 tables BaseProduits et Produits
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle, BaseProduits.IDAtelier
FROM BaseProduits
JOIN Produits
ON BaseProduits.Numero = Produits.Numero
-Lier les 2 tables BaseProduits et Ateliers
SELECT BaseProduits.Numero, BaseProduits.IDAtelier, Ateliers.Libelle
FROM BaseProduits
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
J'obtiens les différents libelles qui m'interessent, mais lorsque j'essaie d'en lier 3, la requête ne m'affiche que le libellé du produit :
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle, BaseProduits.IDAtelier, Ateliers.Libelle
FROM BaseProduits
JOIN Produits
ON Produits.Numero = BaseProduits.Numero
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
Je vous remercie par avance pour votre aide.
A voir également:
- Probleme redaction requete SQL
- Aide a la redaction - Guide
- Logiciel sql - Télécharger - Bases de données
- Blob sql ✓ - Forum Webmastering
- Facture en cours de rédaction - Forum compta / gestion
- Sql (+) - Forum Programmation
2 réponses
Bonjour,
Par souci de compréhension, n'aurait-il pas été plus simple d'assigner le même nom de champ aux colonne représentant la même chose ? Je pense par exemple à Ateliers.Numero qui devrait s'appeler Ateliers.IDAtelier...
La requête a l'air correcte, peut être les champs ne correspondent pas ? Il faudrait essayer avec LEFT OUTER JOIN plutôt que JOIN. Ca permet de retourner toutes les lignes, et de voir les concordances "à la main" : si la ligne est vide après la première colonne BaseProduits.Numero, c'est qu'il n'y a pas ce numéro dans les autres tables.
Parce qu'ici, le JOIN agit comme un filtre, et parmis les Numero communs entre BaseProduits et Produits, aucun ne correspond aux Numero de la table Ateliers...
Par souci de compréhension, n'aurait-il pas été plus simple d'assigner le même nom de champ aux colonne représentant la même chose ? Je pense par exemple à Ateliers.Numero qui devrait s'appeler Ateliers.IDAtelier...
La requête a l'air correcte, peut être les champs ne correspondent pas ? Il faudrait essayer avec LEFT OUTER JOIN plutôt que JOIN. Ca permet de retourner toutes les lignes, et de voir les concordances "à la main" : si la ligne est vide après la première colonne BaseProduits.Numero, c'est qu'il n'y a pas ce numéro dans les autres tables.
Parce qu'ici, le JOIN agit comme un filtre, et parmis les Numero communs entre BaseProduits et Produits, aucun ne correspond aux Numero de la table Ateliers...
Bonjour,
Merci de ta réponse Morgothal.
J'aurais dû préciser que j'étais novice et que c'est ma première requête que je tente de rédiger.
Effectivement mon problème semble venir du fait que les termes "Libelle" se ressemble trop. Il m'a suit de renommer Produits.Libelle et Ateliers.Libelle, pour résoudre mon problème :
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle AS Lib_P, BaseProduits.IDAtelier, Ateliers.Libelle AS Lib_A
FROM BaseProduits
JOIN Produits
ON Produits.Numero = BaseProduits.Numero
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
Comme quoi, en informatique il sufit de pas grand chose,
Encore merci pour ton aide
Mon probleme est RESOLU.
Merci de ta réponse Morgothal.
J'aurais dû préciser que j'étais novice et que c'est ma première requête que je tente de rédiger.
Effectivement mon problème semble venir du fait que les termes "Libelle" se ressemble trop. Il m'a suit de renommer Produits.Libelle et Ateliers.Libelle, pour résoudre mon problème :
SELECT BaseProduits.Numero, Produits.Code, Produits.Libelle AS Lib_P, BaseProduits.IDAtelier, Ateliers.Libelle AS Lib_A
FROM BaseProduits
JOIN Produits
ON Produits.Numero = BaseProduits.Numero
JOIN Ateliers
ON BaseProduits.IDAtelier = Ateliers.Numero
Comme quoi, en informatique il sufit de pas grand chose,
Encore merci pour ton aide
Mon probleme est RESOLU.