Detaillierte Erläuterung des Mysql Self-Join-Abfragebeispiels

Detaillierte Erläuterung des Mysql Self-Join-Abfragebeispiels

Dieser Artikel beschreibt die Mysql-Self-Join-Abfrage. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Self-Join-Abfrage

Stellen Sie sich das folgende Szenario vor: Eine E-Commerce-Website möchte die Produkte auf der Site in eine Hierarchie einordnen, wobei eine Kategorie mehrere Unterkategorien hat und jede Unterkategorie wiederum weitere Unterkategorien aufweist. Unter der Kategorie „Digitale Produkte“ finden sich beispielsweise Laptops, Desktops, Smartphones usw.; Laptops, Desktops und Smartphones können nach Marke klassifiziert werden, Marken können nach Preis klassifiziert werden usw. Möglicherweise erreichen diese Klassifizierungen eine sehr tiefe Ebene und stellen eine baumartige Struktur dar. Wie sollten diese Daten also in der Datenbank dargestellt werden? Wir können zwei Felder in der Datenbank erstellen, um die ID und den Kategorienamen zu speichern, ein drittes Feld verwenden, um die ID der Unterkategorie oder übergeordneten Kategorie der Kategorie zu speichern und schließlich per Self-Join die gewünschten Ergebnisse abfragen.

Eine Self-Join-Abfrage entspricht eigentlich einer Join-Abfrage, die zwei Tabellen erfordert, mit der Ausnahme, dass sowohl die linke Tabelle (übergeordnete Tabelle) als auch die rechte Tabelle (untergeordnete Tabelle) sie selbst sind. Bei einer Self-Join-Abfrage verknüpfen Sie die Tabelle mit sich selbst, geben der übergeordneten und der untergeordneten Tabelle zwei unterschiedliche Aliase und hängen dann die Verknüpfungsbedingungen an. Schauen Sie sich das folgende Beispiel an:

1. Erstellen Sie eine Datentabelle:

Tabelle tdb_cates erstellen(
 ID Smallint Primärschlüssel Auto_Increment,
 cate_name varchar(20) nicht null,
 parent_id smallint nicht null
);

Hinweis: cate_name steht für den Namen der Kategorie und parent_id für die ID der übergeordneten Kategorie.

2. Daten eingeben:

einfügen in tdb_cates(cate_name, parent_id) Werte('digitale Produkte', 0);
einfügen in tdb_cates(cate_name, parent_id) Werte('Haushaltsprodukte', 0);
einfügen in tdb_cates(cate_name, parent_id) Werte('Notebook', 1);
einfügen in tdb_cates(cate_name, parent_id) Werte('Smartphone', 1);
einfügen in tdb_cates(cate_name, parent_id) Werte('Elektrogeräte', 2);
einfügen in tdb_cates(cate_name, parent_id) Werte('Möbel', 2);
einfügen in tdb_cates(cate_name, parent_id) Werte('Kühlschrank', 5);
einfügen in tdb_cates(cate_name, parent_id) Werte('Waschmaschine', 5);
einfügen in tdb_cates(cate_name, parent_id) Werte('Automarke', 0);
einfügen in tdb_cates(cate_name, parent_id) Werte('Buick', 9);
einfügen in tdb_cates(cate_name, parent_id) values('Übergeordnet', 9);
einfügen in tdb_cates(cate_name, parent_id) Werte('Chevrolet', 9);
einfügen in tdb_cates(cate_name, parent_id) Werte('Heimtextilien', 0);

Abfrageergebnisse:

3. Alle Kategorien und ihre übergeordneten Kategorien abfragen: Angenommen, es gibt zwei Tabellen (beide sind tdb_cates), die linke Tabelle ist die untergeordnete Tabelle und die rechte Tabelle ist die übergeordnete Tabelle. Fragen Sie die ID der untergeordneten Tabelle, den Cate_Namen der untergeordneten Tabelle und den Cate_Namen der übergeordneten Tabelle ab. Die Verbindungsbedingung ist, dass die übergeordnete ID der untergeordneten Tabelle mit der ID der übergeordneten Tabelle identisch ist.

Kopieren Sie den Code wie folgt:
Wähle s.id, s.cate_name, p.cate_name aus tdb_cates s links, schließe dich tdb_cates p an mit s.parent_id=p.id;

Abfrageergebnisse:

4. Alle Kategorien und Unterkategorien von Kategorien abfragen: Nehmen wir weiterhin an, dass es zwei Tabellen gibt (beide sind tdb_cates), die linke Tabelle ist die untergeordnete Tabelle und die rechte Tabelle ist die übergeordnete Tabelle; fragen Sie die ID der untergeordneten Tabelle, den Cate_Namen der untergeordneten Tabelle und den Cate_Namen der übergeordneten Tabelle ab; die Verbindungsbedingung ist, dass die ID der untergeordneten Tabelle gleich der Parent_ID der übergeordneten Tabelle ist.

Kopieren Sie den Code wie folgt:
Wähle s.id, s.cate_name, p.cate_name aus tdb_cates s links, schließe dich tdb_cates p an mit p.parent_id=s.id;

Abfrageergebnisse:

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Probleme mit Join-Abfragen und Unterabfragen in MySQL
  • Detaillierte Erläuterung der MySQL-Multitabellen-Joinabfrage
  • Welche Arten von MySQL-Verbindungsabfragen kennen Sie?
  • Prinzip und Anwendung der MySQL-Verbindungsabfrage
  • MySQL-Join-Abfragesyntax und Beispiele
  • Detaillierte Erläuterung der Prinzipien und Anwendungsbeispiele von MySQL-Joinabfragen, Union-Abfragen und Unterabfragen
  • Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels
  • Detaillierte Erläuterung der MySQL-Verbindungsabfrage

<<:  Tutorial zur Installation von Apache 2.4.41 unter Windows 10

>>:  Implementierung der Multi-Environment-Konfiguration (.env) des Vue-Projekts

Artikel empfehlen

Spezifischer Einsatz von Routing Guards in Vue

Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...

Shtml Kurzanleitung

Shtml und asp sind ähnlich. In Dateien mit dem Nam...

So ändern Sie die Längenbeschränkung von group_concat in MySQL

In MySQL gibt es eine Funktion namens „group_conc...

Detaillierte Erklärung des Skript-Debugging-Mechanismus in Bash

Ausführen des Skripts im Debugmodus Sie können da...

Tiefgreifendes Verständnis der Verwendung von r2dbc in MySQL

Einführung MySQL sollte eine sehr häufig verwende...

Installationsprozess der React Native-Umgebung

React-Native-Installationsprozess 1.npx react-nat...

Analysieren Sie, wie eine SQL-Abfrageanweisung in MySQL ausgeführt wird

Inhaltsverzeichnis 1. Übersicht über die logische...

So installieren Sie Oracle auf Windows Server 2016

1. Installieren Sie Oracle. Im Internet gibt es z...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

Zwei Möglichkeiten, den Zeichensatz der HTML-Seite anzugeben

1. Zwei Möglichkeiten, den Zeichensatz der HTML-S...

Einfaches Docker Swarm-Tutorial

Schwarm drei virtuelle Maschinen 132,133,134 1. I...

Detaillierte Erläuterung zum Einrichten des Ressourcencaches in Nginx

Ich wollte schon immer etwas über Caching lernen....