Table des matières
Quand utiliser un auto-jointure
Syntaxe et exemple
Explication:
Un autre exemple: trouver des employés dans le même département
Notes:
Points clés pour se souvenir
Maison base de données SQL Comment utiliser l'auto-rejoindre dans SQL?

Comment utiliser l'auto-rejoindre dans SQL?

Aug 25, 2025 am 10:45 AM
sql

Une jointure automatique est utilisée pour rejoindre un tableau avec lui-même, généralement pour une analyse hiérarchique, séquentielle ou comparative dans le même tableau. 1. Utilisez une adhésion à vous-même lorsque vous traitez des données hiérarchiques comme les employés et les gestionnaires. 2. Appliquez-le pour comparer les lignes dans le même tableau, comme trouver des employés dans le même département. 3. Utilisez des alias de table pour traiter le tableau comme deux entités distinctes. 4. Utilisez les types de jointures appropriées - Rejoing à gauche pour inclure les lignes inégalées, jointure intérieure pour uniquement des paires correspondantes. 5. Empêcher les doublons ou l'auto-apparition en ajoutant des conditions comme e1.emp_id

Comment utiliser l'auto-jointure dans SQL?

Une adhésion à SQL est utilisée lorsque vous souhaitez rejoindre un tableau avec lui-même. Ceci est particulièrement utile pour comparer les lignes dans le même tableau, telles que les données hiérarchiques (comme les employés et leurs gestionnaires), les données séquentielles (comme les journaux ou les séries chronologiques), ou la recherche de relations entre des enregistrements similaires.

Comment utiliser l'auto-jointure dans SQL?

Quand utiliser un auto-jointure

Vous utilisez généralement une adhésion auto-rejoindre lorsque:

  • Le tableau contient des données hiérarchiques (par exemple, un tableau des employés où chaque employé a un gestionnaire, et le gestionnaire est également un employé).
  • Vous devez comparer les lignes dans le même tableau (par exemple, trouver des clients de la même ville).
  • Vous travaillez avec des enregistrements séquentiels ou basés sur le temps et souhaitez trouver des modèles.

Étant donné qu'une table ne peut pas se joindre littéralement à elle-même, vous utilisez des alias de table pour traiter la même table que deux entités distinctes dans la requête.

Comment utiliser l'auto-jointure dans SQL?

Syntaxe et exemple

Disons que vous avez une table employees :

 employés
 -------- ---------- ----------- ------------- 
| EMP_ID | Nom | Manager_id | Département |
 -------- ---------- ----------- ------------- 
| 1 | Alice | NULL | Ingénierie |
| 2 | Bob | 1 | Ingénierie |
| 3 | Charlie | 1 | Ventes |
| 4 | Diana | 2 | Ingénierie |
 -------- ---------- ----------- -------------

Ici, manager_id fait référence à l' emp_id d'un autre employé.

Comment utiliser l'auto-jointure dans SQL?

Pour obtenir une liste d'employés ainsi que les noms de leurs gestionnaires:

 SÉLECTIONNER 
    e.name comme employé_name,
    m.name comme manager_name
DEPUIS 
    Employés E
    Gauche jointer les employés m sur e.manager_id = M.emp_id;

Explication:

  • e est un alias pour l'employé.
  • m est un alias pour le gestionnaire (même tableau).
  • Nous rejoignons employees à lui-même où le manager_id dans la ligne des employés correspond à l' emp_id dans la ligne du gestionnaire.
  • L'utilisation LEFT JOIN garantit que les employés sans managers (comme Alice) apparaissent toujours, avec NULL en tant que directeur.

Résultat:

 --------------- --------------- 
| Employee_name | Manager_name |
 --------------- --------------- 
| Alice | NULL |
| Bob | Alice |
| Charlie | Alice |
| Diana | Bob |
 --------------- ---------------

Un autre exemple: trouver des employés dans le même département

Pour trouver des paires d'employés qui travaillent dans le même département (mais qui ne sont pas la même personne):

 SÉLECTIONNER 
    e1.name en tant qu'employé1,
    E2.Name en tant qu'employé2,
    E1.Département
DEPUIS 
    Employés E1
    Inner Rejoignez les employés E2 
        Sur e1.department = e2.Department 
        Et e1.emp_id <e2.emp_id;

Notes:

  • e1 et e2 sont deux instances du même tableau.
  • La condition e1.emp_id < e2.emp_id évite les paires en double (par exemple, Bob-Charlie et Charlie-Bob) et l'auto-paire.

Résultat:

 ----------- ----------- ------------- 
| Employé1 | Employee2 | Département |
 ----------- ----------- ------------- 
| Bob | Diana | Ingénierie |
| Alice | Bob | Ingénierie |
| Alice | Diana | Ingénierie |
 ----------- ----------- -------------

Points clés pour se souvenir

  • Utilisez toujours des alias (par exemple, e , m ) pour distinguer les deux instances de la table.
  • Choisissez le bon type de jointure :
    • INNER JOIN si vous voulez uniquement des enregistrements correspondants.
    • LEFT JOIN si vous voulez toutes les lignes de la première instance, même sans match.
  • Évitez les résultats infinis ou en double en ajoutant un filtrage approprié (par exemple, e1.id ).
  • Les joints de soi ne sont pas une commande spéciale - ils ne sont que des jointures régulières avec la même table et les mêmes alias.

Fondamentalement, une adhésion à vous permet de considérer une table comme deux vues distinctes des données. Une fois que vous avez compris l'utilisation d'alias et correspondant aux bonnes colonnes, il devient un outil puissant pour analyser les relations dans une seule table.

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)

Sujets chauds

Tutoriel PHP
1596
276
Comment trouver la somme d'une colonne dans SQL? Comment trouver la somme d'une colonne dans SQL? Aug 08, 2025 pm 05:54 PM

TofindTheSumofacolumninsQL, fonction usethesum (), qui a détruit la thèse de l'allnumericvaliesInaspecifiedColumn WhipIgningNulls; 1.Usebasicsyntax: selectSum (Column_Name) AsaliasfromTable_name; 2.enSureThecolumnhasnumericdatatoElorDerearr

Comment obtenir le premier et dernier jour de l'année à SQL? Comment obtenir le premier et dernier jour de l'année à SQL? Aug 11, 2025 pm 05:42 PM

ThefirstdayoftheyEaS a obtenu la constatation de l'instructifation de la 1et-theguvenyear, et dethelastdayisdecember31stoftheSameyear, avec la révocation du système de databases.

Comprendre le contexte et les autorisations d'exécution de SQL Comprendre le contexte et les autorisations d'exécution de SQL Aug 16, 2025 am 08:57 AM

Le contexte d'exécution SQL fait référence à l'identité ou au rôle lors de l'exécution des instructions SQL, qui déterminent les ressources et les autorisations de fonctionnement qui peuvent être accessibles. Le paramètre d'autorisation doit suivre le principe des autorisations minimales, et les autorisations courantes incluent la sélection, l'insertion, l'exécution, etc. Pour résoudre les problèmes d'autorisation, vous devez confirmer le nom de connexion, les autorisations de rôle, les paramètres d'exécution et l'autorisation de schéma. La réalisation de commutation de contexte peut être mise en œuvre via Executeas, mais l'attention doit être accordée à l'existence des utilisateurs, à l'octroi de l'autorisation et à l'impact de la sécurité des performances. Il est recommandé d'éviter d'attribuer arbitrairement les rôles DB_OWNER ou SYSADMIN. Le compte de demande ne doit accéder qu'aux objets nécessaires et être autorisés via le schéma.

Comment rejoindre un tableau à lui-même en SQL Comment rejoindre un tableau à lui-même en SQL Aug 16, 2025 am 09:37 AM

Aself-joinisusedtocomparerowswithinthesametable,suchasinhierarchicaldatalikeemployee-managerrelationships,bytreatingthetableastwoseparateinstancesusingaliases,asdemonstratedwhenlistingemployeesalongsidetheirmanagers'nameswithaLEFTJOINtoincludetop-lev

Quelle est l'instruction ALTER TABLE dans SQL? Quelle est l'instruction ALTER TABLE dans SQL? Aug 08, 2025 pm 02:13 PM

ThealterTableStatementsUsesedTomodifyAnExistSingTable’sstructurewithoutrecreatingit; 1.AddanewColumnusingAddColumn; 2.Dropacolumn retireroPColumn, quialsodeletesitsdata; 3.RenameacolumnusingRenameColumn, withyntaxConsistentinmysql, sqlServer, andPostgreSql; 4

Comment créer une vue dans SQL Comment créer une vue dans SQL Aug 11, 2025 pm 12:40 PM

La syntaxe pour la création d'une vue est l'instruction CreateEviewView_NAMEASSELECT; 2. La vue ne stocke pas les données réelles, mais est basée sur les résultats de requête en temps réel de la table sous-jacente; 3. La vue peut être modifiée à l'aide de CreateOrReplaceView; 4. La vue peut être supprimée via DropView; 5. La vue convient pour simplifier les requêtes complexes, fournir un contrôle d'accès aux données et maintenir la cohérence de l'interface, mais l'attention doit être accordée aux performances et à la logique, et se termine enfin par une phrase complète.

Comment utiliser la jointure extérieure complète dans SQL? Comment utiliser la jointure extérieure complète dans SQL? Aug 17, 2025 am 12:25 AM

AfulLouterJoinernsallRowsfrombothtables, avec un NulswherenomatchExists; 1) itcombinesMatchingRecordSandincludsUnsUrmatchedrowsfrombothleftandRightTables; 2)

Migrer d'une base de données SQL à MongoDB: défis et solutions Migrer d'une base de données SQL à MongoDB: défis et solutions Aug 16, 2025 pm 01:40 PM

TransformDatamodelsByembeddingorReferencingBasedOnAccessSpatternSinSteaDofusingJons; 2. Handletransactions byfavoringatomicoperations et la consommation évidente, réserve laMulti-DocumentTransactions

See all articles