Requètes imbriqués et conditions

Résolu
pandi-panda -  
 pandi-panda -
Bonjour,

Je suis actuellement entrain de créer une base de données contenant les tables suivantes :
Boissons(Id_boisson, Nom_boisson, Qte_Boisson, prix_Boisson);
Boissonsalcoolisee(Id_boisson, DegreeAlcool);
Boissonsnonalcoolisee(Id_boisson, DegreeSucre);

Voila je pense que vous avez compris le principe une table regroupant toutes les boissons puis 2 tables completants la table boisson selon qu'elles soient alcoolisés ou non.

Mon problème est le suivant :

Je voudrai afficher tous les champs d'une boisson qui la concerne ( champs degreealcool si elle est alcoolisée ou degreesucre si elle ne l'est pas)

J'ai essayé des requètes imbriqués mais je n'arrive à aucun résultats, si vous pouviez m'aider.

Merci d'avance

1 réponse

  1. jee pee Messages postés 31990 Date d'inscription   Statut Modérateur Dernière intervention   10 015
     
    Salut,

    La solution c'est la jointure externe qui ramène l'enregistrement d'une table même sans correspondance dans une seconde.

    Sous oracle je mettrais :

    Select A.Id_boisson, Nom_boisson, Qte_Boisson, prix_Boisson, DegreeAlcool, DegreeSucre
    From Boissons A , Boissonsalcoolisee B , Boissonsnonalcoolisee C
    where A.id_boisson=B.id_boisson(+)
    and A.id_boisson=C.id_boisson(+)
    /

    Le (+) représente la jointure externe sous Oracle.

    cdlt

    Un étranger, c'est un ami qu'on n'a pas encore rencontré.
    1
    1. pandi-panda
       
      Merci pour ta reponse mais en fait le souci c'est que par exemple :
      La boisson jus d'orange aura un Degree de sucre mais pas d'alcool et du coup y a un problème avec la table boissonsnonalcoolisee qui est vide pour cette boisson.
      Avec cette requète Sql ne me renvoie aucune ligne.
      Je sais si j'ai suis trés clair ?

      Merci
      0
    2. jee pee Messages postés 31990 Date d'inscription   Statut Modérateur Dernière intervention   10 015
       
      Si.

      Mais c'est bien pourquoi les jointures externes existent.

      C'est cette piste qu'il faut suivre, avec la syntaxe propre à ton sgbd, que tu n'as pas précisé.
      0
    3. pandi-panda
       
      Salut,

      tu avais en effet raison il fallait utiliser la jointure externe (left outer join sous Mysql).

      Merci de ton aide.
      0