Requètes imbriqués et conditions
Résolu
pandi-panda
-
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
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
A voir également:
- Requètes imbriqués et conditions
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Je ne suis pas un robot confidentialité - conditions ✓ - Forum Mail
- Comment débloquer "je ne suis pas un robot" ✓ - Forum Windows 8 / 8.1
- Libreoffice calc si plusieurs conditions ✓ - Forum LibreOffice / OpenOffice
- Désactiver un robot captcha - Forum Facebook
1 réponse
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é.
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é.
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
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é.
tu avais en effet raison il fallait utiliser la jointure externe (left outer join sous Mysql).
Merci de ton aide.