|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 595 ![]() |
Bonjour,
Je n'arrive pas à comprendre la logique de MySQL dans une requête avec une auto jointure sur une table utilisant la représentation intervallaire . Mon exemple provient d'une requête Joomla Code :
SELECT a.id, a.lft, a.rgt FROM jos_categories AS a LEFT JOIN jos_categories AS b ON a.lft > b.lft AND a.rgt < b.rgt WHERE a.extension="com_content" GROUP BY a.id ORDER BY a.LEFT ASC Dans mon idée (sûrement fausse), si on fait une jointure sur une même table on récupère les même valeurs (? Et si je continue mon raisonnement je ne comprend donc pas comment a.lft peut-il être plus grand que lui-même (b.lft), ou comment a.rgt peut il être plus petit que lui même. Je me doute qu'il y a une astuce mais je n'arrive pas à me représenter comment MySQL évalue cette jointure. Quelqu'un pourrait-il m'éclairer ? Merci |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 577 ![]() |
Bonjour,
Tu peux trouver des infos dans le cours de SQLPro sur les jointures http://sqlpro.developpez.com/cours/sqlaz/jointures/
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros! Code C :
|
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 595 ![]() |
Oui, j'ai déjà vu ce tuto, mais je n'arrive pas à l'adapter à mon exemple c'est pourquoi je demande un peu d'aide.
|
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 657 ![]() |
Citation:
Une jointure externe sert à joindre partiellement une table "mère" à une table fille. Si pour ligne de la table "mère" aucune ligne de la table "fille " n'est trouvée on la sélectionne quand même . Dans votre exemple les jointures ne servent en fait strictement à rien vu qu'auncue sélection n'est faites sur la table aliassé b |
|
|
|
00
|
|
|
#5 | |
|
Membre habitué
![]() Inscription : septembre 2003 Messages : 595 ![]() |
Citation:
![]() En effet si je supprime la jointure dans la requête, le résultat est le même. Code :
SELECT a.id, a.lft, a.rgt FROM jos_categories AS a WHERE a.extension="com_content" GROUP BY a.id ORDER BY a.lft ASC |
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Le GROUP BY ne sert à rien non plus sans fonction de regroupement dans le SELECT !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com