Heim >Datenbank >MySQL-Tutorial >Wie kombiniere ich Daten aus drei MySQL-Tabellen mithilfe von JOINs zu einer neuen Tabelle?
Daten aus mehreren Tabellen in einer neuen Tabelle mit MySQL kombinieren
Bei der Arbeit mit relationalen Datenbanken müssen Sie häufig Daten aus mehreren Tabellen kombinieren in eine neue Tabelle. Diese Frage zeigt, wie dies mithilfe eines 3-Wege-JOIN in MySQL erreicht wird.
Ziel: Erstellen Sie eine neue Tabelle, die bestimmte Daten und Spalten aus drei vorhandenen Tabellen (Personen, Taxonomie usw.) enthält Details).
Vorhanden Tabellen:
people id last_name first_name email 1 Smith Fred Fred@.. 2 Jones Tom Tom@.. 3 Doe Jane Jane@.. taxonomy id taxonomy 1 age 2 gender 3 height details id person_id detail_id content 1 1 1 36 2 1 2 M 3 1 3 5'10" 4 2 1 29 5 2 2 M 6 2 3 6'3" 7 3 1 27 8 3 2 F 9 3 3 5'8"
Gewünschtes Ergebnis (Neue Tabelle):
id last_name first_name email age 1 Smith Fred Fred@.. 36 2 Jones Tom Tom@.. 29 3 Doe Jane Jane@.. 27
Lösung mit einem 3-Wege-JOIN:
Um die neue Tabelle zu erstellen, müssen wir einen 3-Wege-JOIN durchführen, um die drei vorhandenen Tabellen basierend darauf zu verbinden Gemeinsame Werte:
CREATE TABLE new_table AS SELECT p.*, d.content AS age FROM people AS p JOIN details AS d ON d.person_id = p.id JOIN taxonomy AS t ON t.id = d.detail_id WHERE t.taxonomy = 'age';
Dieser JOIN kombiniert die Daten aus der Personentabelle mit der Detailtabelle basierend auf der Spalte „person_id“ und verknüpft dann die Detailtabelle weiter mit der Taxonomietabelle basierend auf der Spalte „detail_id“, wobei nur gefiltert wird für Zeilen, in denen die Taxonomie „Alter“ lautet.
Alternativer Ansatz (für Multiple Attribute):
Um mehrere Attribute (wie Alter, Geschlecht und Größe) aus der Detailtabelle einzuschließen, müssen Sie für jedes Attribut separate JOINs ausführen:
CREATE TABLE new_table AS SELECT p.*, d1.content AS age, d2.content AS gender, d3.content AS height FROM people AS p JOIN details AS d1 ON d1.person_id = p.id JOIN taxonomy AS t1 ON t1.id = d1.detail_id JOIN details AS d2 ON d2.person_id = p.id JOIN taxonomy AS t2 ON t2.id = d2.detail_id JOIN details AS d3 ON d3.person_id = p.id JOIN taxonomy AS t3 ON t3.id = d3.detail_id WHERE t1.taxonomy = 'age' AND t2.taxonomy = 'gender' AND t3.taxonomy = 'height';
Mit diesem Ansatz können Sie Daten aus mehreren Spalten in der Detailtabelle in der neuen Tabelle kombinieren.
Das obige ist der detaillierte Inhalt vonWie kombiniere ich Daten aus drei MySQL-Tabellen mithilfe von JOINs zu einer neuen Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!