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:
|
<<: Tutorial zur Installation von Apache 2.4.41 unter Windows 10
>>: Implementierung der Multi-Environment-Konfiguration (.env) des Vue-Projekts
Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...
Shtml und asp sind ähnlich. In Dateien mit dem Nam...
So verwenden Sie die Concat-Funktion in MySQL: CO...
In der SQL-ähnlichen Anweisung beispielsweise SEL...
In MySQL gibt es eine Funktion namens „group_conc...
Ausführen des Skripts im Debugmodus Sie können da...
Einführung MySQL sollte eine sehr häufig verwende...
React-Native-Installationsprozess 1.npx react-nat...
Inhaltsverzeichnis 1. Übersicht über die logische...
1. Installieren Sie Oracle. Im Internet gibt es z...
1. Einleitung Ich habe vor Kurzem an einem Projek...
1. Zwei Möglichkeiten, den Zeichensatz der HTML-S...
Schwarm drei virtuelle Maschinen 132,133,134 1. I...
Vorwort Hinweis: Die Testdatenbankversion ist MyS...
Ich wollte schon immer etwas über Caching lernen....