Lösung zum Finden aller untergeordneten Zeilen für eine bestimmte übergeordnete Zeile in MySQL

Lösung zum Finden aller untergeordneten Zeilen für eine bestimmte übergeordnete Zeile in MySQL

Vorwort

Hinweis: Die Testdatenbankversion ist MySQL 8.0

Wenn Sie Tabellen erstellen und Daten unter dem Benutzer „Scott“ eingeben müssen, finden Sie weitere Informationen unter:

Scott erstellt Tabellen und gibt Daten ein SQL-Skript

1. Nachfrage

Suchen Sie alle Mitarbeiter, die direkt und indirekt für JONES arbeiten (d. h. Untergebene der Untergebenen von JONES).

Die Liste der unter JONES beschäftigten Mitarbeiter lautet wie folgt:

±------±-----+
| E-Mail | Stufe |
±------±-----+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SCHMIED | 3 |
±------±-----+

2. Lösung

Die Möglichkeit, ganz nach oben oder unten in einer Zahl zu gelangen, ist sehr nützlich.

Für diese Lösung ist keine spezielle Formatierung erforderlich. Das Ziel besteht lediglich darin, alle dem Mitarbeiter JONES unterstellten Mitarbeiter zurückzuholen, wozu auch JONES selbst gehört.

Diese Art von Abfrage demonstriert die Nützlichkeit rekursiver SQL-Erweiterungen wie „Connect By“ von Oracle und der „Without“-Klausel von SQL Server/DB 2/MySQL 8.0.

mit rekursivem emp2(ename,empno,lvl) als
(
SELECT ename,empno,1 Ebene
 von emp 
 wobei ename = 'JONES'
Gewerkschaft ALLE
wähle e1.ename,e1.empno,lvl + 1
 von emp e1,emp2 e2
 wobei e1.mgr = e2.empno
)
wähle ename,lvl aus emp2

Testprotokoll:

mysql> mit rekursivem emp2(ename,empno,lvl) als
 -> (
 -> WÄHLEN Sie ename, empno, 1 Ebene
 -> von emp
 -> wobei ename = 'JONES'
 -> Vereinigung ALLE
 -> wähle e1.ename,e1.empno,lvl + 1
 -> von emp e1,emp2 e2
 -> wobei e1.mgr = e2.empno
 -> )
 -> wähle ename,lvl aus emp2;
+----------+------+
| E-Mail | Stufe |
+----------+------+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SCHMIED | 3 |
+----------+------+
5 Zeilen im Satz (0,01 Sek.)

Zusammenfassen

Dies ist das Ende dieses Artikels zum Suchen aller untergeordneten Zeilen für eine bestimmte übergeordnete Zeile in MySQL. Weitere Informationen zum Suchen aller untergeordneten Zeilen für eine bestimmte übergeordnete Zeile in MySQL finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Beispiel für die Installation und Bereitstellung von Docker unter Linux

>>:  Einige Tipps zur umfassenden Optimierung, um die Zugriffsgeschwindigkeit von Websites zu verbessern

Artikel empfehlen

Ein MySQL-Migrationsplan und eine praktische Auflistung der Fallstricke

Inhaltsverzeichnis Hintergrund Lösung 1: Alte Dat...

So erstellen Sie eine TAR-Datei von WSL über Docker

Ich habe kürzlich mit der Remote-Entwicklungsfunk...

Kodierungsprobleme und -lösungen, wenn MySQL zwei Tabellen verknüpft

Wenn Mysql zwei Tabellen verknüpft, wird eine Feh...

Einführung in lokale Komponenten in Vue

In Vue können wir lokale Komponenten selbst defin...

Langsame MySQL-Abfrage: Langsame Abfrage aktivieren

1. Was nützt eine langsame Abfrage? Es kann alle ...

CentOS 7.9 Installations- und Konfigurationsprozess von zabbix5.0.14

Inhaltsverzeichnis 1. Grundlegende Umgebungskonfi...

Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop

1) Prozess 2) FSImage und Bearbeitungen Nodenode ...