Probleme redaction requete SQL

Résolu
Bonjour,

Je suis un utilisateur débutant d'une base de donnée sous SQL. Je suis en train d'essayer d'apprendre à rédiger des requêtes et je rencontre un problème.

J'ai 2 tables :
- T1 qui contient 2 colonnes, une RECETTE et une INGREDIENT (chaque recette et chaque ingredient sont definis par un numero)
- T2 qui contient 2 colonnes, une NUMERO et une LIBELLE (les numeros sont les même que ceux de la table 1)

Je cherche à associer ces 2 tables pour avoir sous forme de libelle le Nom de la recette et ses ingredients.

SELECT T1.Recette, T2.Libelle AS Recette, T1.Ingredient, T2.Libelle AS Ingredient
FROM T1, T2
WHERE T1.Recette = T2.Numero
AND T1.Ingredient = T2.Numero

Bien entendu, je n'obtiens aucune information. Je comprends que ma requête manque de clareté, mais je n'arrive pas à m'en sortir.

Je vous remercie par avance de votre aide

5 réponses

  1. Bonjour,

    Merci à Jee Pee et Le Pere. J'ai essayé les deux solutions et elles fonctionnent parfaitement.

    Encore merci pour votre aide,

    Cordialement
    1. Bonjour

      Il faut faire 2 jointures distinctes :

      SELECT T2.Libelle as recette, t3.Libelle as ingredient from T1 JOIN T2 on T1.RECETTE=T2.Numero JOIN T2 as t3 on T1.INGREDIENT=t3.Numero ORDER BY recette, ingredient


      Mais il faudrait surtout ne pas mélanger dans la même table des choses différentes : tu devrais avoir 2 tables distinctes pour les libellés des ingrédients et des recettes.
      1. Bonjour,

        Merci pour ta réponse Morgothal.

        J'ai essayé ta proposition, malheureusement, je n'obtiens pas de résultat exploitable. J'ai dans les 2 colonnes les même données.
        Au lieu d'avoir le nom de ma recette et les ingrédients, j'ai la même chose des 2 côtés.

        Merci.
        1. Modérateur
          Bonjour,

          Comme il faut récupérer 2 libelles dans la table T2, j'utiliserais 2 fois la table dans la requête :

          SELECT T1.Recette, T2R.Libelle AS LRecette,
          T1.Ingredient, T2I.Libelle AS LIngredient
          FROM T1, T2 T2R, T2 T2I
          WHERE T1.Recette = T2R.Numero
          AND T1.Ingredient = T2I.Numero

          cdlt
          1. Salut,
            La requête est bonne, c'est juste que bien entendu tu ne peux pas avoir ces deux conditions réunies :
            WHERE T1.Recette = T2.Numero   
            AND T1.Ingredient = T2.Numero 

            Il faudrait essayer de remplacer le AND par OR ;)
            Et au mieux :
            SELECT T1.Recette, T2.Libelle AS Recette, T1.Ingredient, T2.Libelle AS Ingredient  
            FROM T1   
            JOIN T2  
            ON (T1.RECETTE = T2.NUMERO OR T1.INGREDIENT=T2.NUMERO)


            -------------------
            Cordialement,
            Clément