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

Docker-Compose-Tutorial: Installation und Schnellstart

Inhaltsverzeichnis 1. Einführung in Compose 2. Co...

So löschen Sie schnell alle Tabellen in MySQL, ohne die Datenbank zu löschen

Dieser Artikel beschreibt anhand eines Beispiels,...

Verwenden Sie JavaScript, um Seiteneffekte zu erstellen

11. Verwenden Sie JavaScript, um Seiteneffekte zu...

CSS3 erzielt verschiedene Randeffekte

Durchscheinender Rand Ergebnis: Implementierungsc...

CSS3 realisiert das Papierflugzeug aus der Kindheit

Heute werden wir Origami-Flugzeuge basteln (die A...

Lösung für das Problem des Sitzungsverlusts bei Nginx

Bei der Verwendung von Nginx als Reverse-Proxy fü...

JavaScript-Grundlagen: Fehlererfassungsmechanismus

Inhaltsverzeichnis Vorwort Error-Objekt werfen ve...

MySql-Freigabe der Nullfunktionsnutzung

Funktionen zu Null in MySql IFNULL ISNULL NULLIF ...

Abfrageprozess und Optimierungsmethode der (JOIN/ORDER BY)-Anweisung in MySQL

Die EXPLAIN-Anweisung wird im MySQL-Abfrageanweis...

Mysql aktualisiert die Datenbank dynamisch - Skriptbeispiel - Erklärung

Das spezifische upgrade -Skript lautet wie folgt:...