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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ce que je n'arrive pas à comprendre c'est comment fonctionne l'auto jointure.
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 (?) ce qui voudrait dire que, dans l'exemple, a.categories et b.categories sont identiques.
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