Table des matières
Interrogez toute la hiérarchie en utilisant un CTE récursif
Interroger tous les supérieurs d'un employé (chemin inversé)
Optimisation et précautions pour la requête hiérarchique
Maison base de données SQL Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?

Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?

Jul 09, 2025 am 01:40 AM
sql Requête de données hiérarchique

Les données hiérarchiques de l'interrogation peuvent être obtenues grâce à un CTE récursif. 1. Utilisez un CTE récursif pour étendre la structure de l'arbre pour obtenir tous les subordonnés d'un certain gestionnaire; 2. La même méthode peut interroger réversement tous les supérieurs d'un certain employé; 3. Il faut prendre soin d'éviter les références circulaires, d'optimiser les performances et de considérer les améliorations de la structure de stockage. Plus précisément, l'instruction avec récursive est la couche traversée par couche et combinée à l'indexation, aux restrictions de profondeur et à d'autres moyens d'améliorer l'efficacité.

Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?

Interroger des données hiérarchiques, telles que les données des employés-gestionnaire avec une relation père-fils, est en effet un peu plus compliquée que les requêtes ordinaires dans SQL. Parce que ce type de structure est de nature en forme d'arbre et que SQL est conçu pour les tables plates, quelques astuces sont nécessaires pour "développer" l'arbre.

Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?

La pratique la plus courante consiste à utiliser une requête récursive , ce que nous appelons souvent le CTE, qui est pris en charge dans les bases de données traditionnelles telles que PostgreSQL, SQL Server, MySQL 8 et Oracle.

Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?

Voici plusieurs méthodes pratiques et suggestions de scénarios:


Interrogez toute la hiérarchie en utilisant un CTE récursif

Si vous voulez connaître tous les subordonnés sous un manager (y compris les subordonnés indirects), un CTE récursif est utile.

Comment interroger les données hiérarchiques, comme une relation employée-gestionnaire, dans SQL?
 Avec un employé récursif_tree comme (
    - Requête initiale: trouver le subordonné direct Sélectionner Employee_ID, Manager_id, nom, 1 AS NIVEAU
    Des employés
    Où manager_id = 100 - Supposons que vous souhaitiez vérifier tous les syndicats subordonnés avec manager_id de 100

    - Partie récursive: Continuez à trouver le niveau suivant SELECT E.EMPLOYEE_ID, E.MANAGER_ID, E.NAME, ET.LEVEL 1
    Des employés e
    Inner Join Employee_Tree et sur e.manager_id = et.employee_id
)
SELECT * dans Employee_Tree;

Cette requête sera recherchée vers le bas par calque jusqu'à ce qu'il n'y ait plus de nœuds enfants. level peut vous aider à comprendre la profondeur de la hiérarchie.


Interroger tous les supérieurs d'un employé (chemin inversé)

Parfois, vous voudrez peut-être vérifier le lien de rapport d'un employé, comme la recherche du PDG de lui tout le long.

Vous pouvez également utiliser un CTE récursif, mais cette fois, vous revenez du nœud enfant au nœud parent:

 Avec récursif manager_chain as (
    - Initial: Commencez avec des employés spécifiques Sélectionnez Employee_ID, Manager_id, nom, 1 As Niveau
    Des employés
    Où Employee_ID = 200 - Je veux vérifier tous les supérieurs de l'employé 200 syndicaux

    - Recursion: recherchez le gestionnaire sélectionné e.employee_id, e.manager_id, e.name, mc.level 1
    Des employés e
    Inner Join Manager_chain MC sur E.Employee_ID = MC.MANAGER_ID
)
SELECT * FROM Manager_Chain;

De cette façon, vous pouvez voir le chemin de l'employé signalant vers le haut.


Optimisation et précautions pour la requête hiérarchique

  • Évitez les boucles infinies : s'il y a une référence circulaire dans les données (comme A est le gestionnaire de B et B est le gestionnaire de a), la requête récursive peut être une boucle morte. Un enregistrement de chemin ou une limite de profondeur maximale peut être ajouté lorsqu'il est récursif.

  • Problèmes de performance : les requêtes récursives peuvent ralentir lorsque la hiérarchie est profonde ou que la quantité de données est importante. Considérer:

    • Ajouter un index: créer des index appropriés sur manager_id et employee_id
    • Filtres Fields à l'avance: Réduisez les transferts de champ inutiles
    • Contrôlez la profondeur récursive: par exemple, ajoutez WHERE level pour éviter une traversée excessive
  • Optimisation de la structure de stockage (avancé) : Si vous souhaitez souvent faire face aux requêtes hiérarchiques, vous pouvez envisager d'introduire un tableau de fermeture ou d'utiliser un modèle de jeu imbriqué, mais ces méthodes sont plus rentables à maintenir.


Fondamentalement, ce sont les méthodes. Bien qu'il soit un peu gênant à écrire que les requêtes ordinaires, tant que la structure est claire et que la logique est claire, les requêtes récursives ne sont en fait pas difficiles à maîtriser. La clé est de choisir la méthode d'écriture appropriée en fonction des besoins de votre entreprise et de faire attention à la conception de la structure des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le but de SQL: interagir avec les bases de données MySQL Le but de SQL: interagir avec les bases de données MySQL Apr 18, 2025 am 12:12 AM

SQL est utilisé pour interagir avec la base de données MySQL pour réaliser l'ajout de données, la suppression, la modification, l'inspection et la conception de la base de données. 1) SQL effectue des opérations de données via des instructions SELECT, INSERT, UPDATE, DELETE; 2) Utiliser des instructions Create, Alter, Drop pour la conception et la gestion de la base de données; 3) Les requêtes complexes et l'analyse des données sont mises en œuvre via SQL pour améliorer l'efficacité de la prise de décision commerciale.

Comment utiliser Aws Glue Crawler avec Amazon Athena Comment utiliser Aws Glue Crawler avec Amazon Athena Apr 09, 2025 pm 03:09 PM

En tant que professionnel des données, vous devez traiter de grandes quantités de données provenant de diverses sources. Cela peut poser des défis à la gestion et à l'analyse des données. Heureusement, deux services AWS peuvent aider: AWS Glue et Amazon Athena.

MySQL et SQL: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

MySQL: une application pratique de SQL MySQL: une application pratique de SQL May 08, 2025 am 12:12 AM

MySQL est populaire en raison de ses excellentes performances et de sa facilité d'utilisation et de son entretien. 1. Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2. Données d'insertion et de requête: Faire fonctionner les données via InsertInto et sélectionnez des instructions. 3. Optimiser la requête: utilisez les index et expliquez les instructions pour améliorer les performances.

SQL vs MySQL: clarifier la relation entre les deux SQL vs MySQL: clarifier la relation entre les deux Apr 24, 2025 am 12:02 AM

SQL est un langage standard pour gérer les bases de données relationnelles, tandis que MySQL est un système de gestion de bases de données qui utilise SQL. SQL définit les moyens d'interagir avec une base de données, y compris les opérations CRUD, tandis que MySQL implémente la norme SQL et fournit des fonctionnalités supplémentaires telles que les procédures stockées et les déclencheurs.

SQL: la langue, MySQL: le système de gestion de la base de données SQL: la langue, MySQL: le système de gestion de la base de données Apr 21, 2025 am 12:05 AM

La relation entre SQL et MySQL est: SQL est un langage utilisé pour gérer et exploiter des bases de données, tandis que MySQL est un système de gestion de bases de données qui prend en charge SQL. 1.SQL permet les opérations CRUD et les requêtes avancées de données. 2.MySQL fournit des mécanismes d'indexation, de transactions et de verrouillage pour améliorer les performances et la sécurité. 3. Optimisation des performances de MySQL nécessite une attention à l'optimisation des requêtes, à la conception de la base de données et à la surveillance et à la maintenance.

SQL et PhpMyAdmin: A débutant Guide SQL et PhpMyAdmin: A débutant Guide Apr 16, 2025 am 12:02 AM

Les débutants peuvent apprendre SQL et PHPMYADMIN à partir de zéro. 1) Créez une base de données et des tables: créez une nouvelle base de données dans PhpMyAdmin et créez des tables à l'aide de commandes SQL. 2) Exécutez la requête de base: utilisez l'instruction SELECT pour requête les données dans le tableau. 3) Optimisation et meilleures pratiques: créer des index, éviter de sélectionner *, utiliser les transactions et sauvegarder régulièrement des bases de données.

SQL et MySQL: Comprendre la relation SQL et MySQL: Comprendre la relation Apr 16, 2025 am 12:14 AM

La relation entre SQL et MySQL est la relation entre les langues standard et les implémentations spécifiques. 1.SQL est un langage standard utilisé pour gérer et exploiter des bases de données relationnelles, permettant l'addition de données, la suppression, la modification et la requête. 2.MySQL est un système de gestion de base de données spécifique qui utilise SQL comme langage de fonctionnement et fournit un stockage et une gestion efficaces de données.

See all articles