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

Anwendung zur Verarbeitung von HTML-Tag-Überläufen

Verwenden Sie CSS, um Bildlaufleisten zu ändern 1...

Beispiel für das Erreichen eines Deckeneffekts mit dem WeChat-Applet

Inhaltsverzeichnis 1. Umsetzung 2. Probleme 3. Üb...

Eine Zusammenfassung detaillierter Einblicke in den Import von CSS

Auf die Entwicklungsgeschichte von CSS wird hier ...

Allgemeine Array-Operationen in JavaScript

Inhaltsverzeichnis 1. verketten() 2. beitreten() ...

Einführung in JavaScript-Array-Deduplizierungs- und -Flatteningfunktionen

Inhaltsverzeichnis 1. Array-Abflachung (auch als ...

JavaScript-Plugin-Kapselung für Tabellenwechsel

In diesem Artikel wird der Kapselungscode von Jav...

Detaillierte Erklärung der CocosCreator MVC-Architektur

Überblick Dieser Artikel stellt die in Spieleclie...

Zusammenfassung häufiger Probleme mit MySQL-Indizes

F1: Welche Indizes hat die Datenbank? Was sind di...

So deinstallieren Sie das native OpenJDK von Linux und installieren Sun JDK

Siehe: https://www.jb51.net/article/112612.htm Üb...

Installationsprozess des 64-Bit-Quellcodes von CentOs7 MySQL 5.6.40

1. Installieren Sie zuerst die Abhängigkeitspaket...