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 31886 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    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 31886 Date d'inscription   Statut Modérateur Dernière intervention   9 981
       
      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