|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mai 2010 Messages : 164 ![]() |
Bonjour à tous,
Pour l'exemple, on va prendre une situation totalement virtuelle, mais qui représente simplement mon problème : Soit 3 tables : mere, garcon, fille, toutes telles que : Les tables garcon et fille sont reliées à mere par leur id. Maintenant, ma complication : il y a une quatrième table, appelé fruit, de structure identique aux autres, connectée à l'id fille par son id. Ce que je souhaite, c'est faire une jointure qui récupère aussi le nom du fruit : Code :
Une piste ? Merci à vous, LeHibou |
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : mai 2010 Messages : 164 ![]() |
C'est bon, j'ai réglé mon problème avec des clauses where.
Par contre, peut-on m'expliquer en quoi une jointure qui n'a rien à voir avec la table du from, nommée "mere" mais qui est reliée à une table elle-même reliée à "mere" ne me sort aucun résultat ? |
|
|
01
|
|
|
#3 |
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Ta seconde condition de jointure n'est pas bonne.
Au lieu de : Il faut : |
|
|
10
|
|
|
#4 | ||||
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Bonjour.
+1 pour l'erreur dans la condition relevée par Fred_34. Citation:
Citation:
Code :
Même dans le cas où il te faut faire une sélection la totalité des colonnes, en indiquant précisément les colonnes que tu souhaites obtenir dans ton résultat, tu as au moins la maîtrise de ce que tu fait (et non pas une part de hasard) et si un jour tu rajoute pour X raison une colonne dans ta table, au moins elle n’alourdira pas la requête si tu ne l'utilise pas. De même si pour X raison, tu retire une colonne et qu'elle était nécéssaire à cette requête, tu te rendra compte de l'erreur beaucoup plus rapidement que si tu avait mis un "*". A vrai dire, le seul cas ou le "*" peux se justifier pour moi => c'est dans un count (là ça n'impacte pas les performances en terme de coût de la requête et le schéma de la table ne changera rien au résultat contrairement à une sélection de données).Cordialement, Idriss |
||||
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : mai 2010 Messages : 164 ![]() |
Bonjour,
L'erreur relevée par fred_34 est bien sûr une typo lorsque j'ai écrit, dans la vraie situation, elle n'était pas présente Pour le where, il est inclus dans une requête du type : Enfin, pour l'étoile, dans la solution finale , je ne sélectionne que 3 champs, précédés du nom diminutif de la table. Par contre Code :
Etrange, et c'était là mon étonnement ! [edit] Réglé, je m'étais effectivement trompé de champ, mais pas comme dans mon exemple. Bref erreur d'étourderie.. Mea culpa d'avoir pris de votre temps ! A bientôt, LeHibou |
||
|
|
00
|
|
|
#6 | |||||||||
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Bonjour.
Moi quand je vois ta requête, je me pose des questions sur la conception parce que sémantiquement parlant, ça veut dire qu'un identifiant se retrouve à la fois dans mere, fille, garçon et fruit ![]() Faudra nous expliquer ce que sa signifie mais logiquement Citation:
Citation:
![]() Citation:
Bon bref, pour moi cette requête ne veux absolument rien dire et tu as un gros problème de conception ![]() Voici une conception plus raisonnable Code autre :
En gros au niveau relationnel tu aurais ça (une solution possible) : Code autre :
Les fruits je vois pas trop ce qu'ils viennent faire dans ton histoire, faudra me donner davantage d'explication. Un peu de lecture (voir en particulier la partie héritage qui pourrait t'intéresser) : Initiation à la conception de bases de données relationnelles. Citation:
![]() Citation:
Cordialement, Idriss |
|||||||||
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mai 2010 Messages : 164 ![]() |
J'ai mis des noms à la con, il n'y a aucune logique dans l'exemple que j'ai donné. Non, il n'y a plus d'étoile non plus ![]() ![]() Et il n'y a pas de problème de conception, tout s'emboîte parfaitement dans un ensemble solide. Juste que je ne veux pas mettre des tables de 3 km de long et je renomme en fonction de ce qui me vient en tête au moment d'écrire. Je crois que j'avais notifié que l'exemple en soi n'était pas appliqué (totalement virtuel) Ce qui m'intéressait, c'était la logique. Merci beaucoup en tout cas
|
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Ok je suis rassuré
|
|
00
|
Copyright © 2000-2013 - www.developpez.com