Requête SQL relationnelle hiérarchique

Comme nous le savons tous, il doit y avoir un champ d'identifiant parent dans la table générale de la requête hiérarchique, qui est généralement représenté par parent_id. Pour faciliter la récupération, la plupart des entreprises mettront en place un champ de chemin pour enregistrer l'état du niveau actuel. pour prouver le niveau actuel La position dans la chaîne hiérarchique actuelle.
Lorsque nous avons l'information du chemin courant, il est relativement simple d'obtenir tous ses subordonnés, nous n'avons qu'à effectuer une correspondance floue du bon côté, mais ce sera plus compliqué lorsque nous voulons obtenir toutes les chaînes supérieures courantes, car notre courant Le niveau supérieur de la hiérarchie peut avoir plusieurs subordonnés, et nous ne sommes qu'une des branches actuelles, donc ce sera plus gênant lorsque nous voulons obtenir une chaîne, et il nous est impossible d'appeler à plusieurs reprises la base de données pour obtenir selon le parent_id, qui est un gaspillage de ressources. Ensuite, je montre comment l'obtenir.

Prenez une châtaigne :

Affichage des relations hiérarchiques

# 获取当前组织所有子组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE path LIKE CONCAT('000001', '%') and deleted = 0;

# 获取当前组织所有上级组织链中的组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE '000001' LIKE CONCAT(path, '%') and deleted = 0;

Permettez-moi de vous montrer les résultats renvoyés par les deux exécutions SQL ci-dessus :

  • Après l'exécution du premier SQL, les résultats sont affichés
    afficher les subordonnés
  • Une fois la deuxième exécution SQL terminée, les résultats s'afficheront.
    montrer supérieur
    Remarque :
    Il convient de noter que, que la requête soit supérieure ou subordonnée, elle s'inclut elle-même et doit être traitée par elle-même.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43650254/article/details/123790038
conseillé
Classement