Heim >Datenbank >MySQL-Tutorial >Wie kombiniere ich Daten aus drei MySQL-Tabellen mithilfe von JOINs zu einer neuen Tabelle?

Wie kombiniere ich Daten aus drei MySQL-Tabellen mithilfe von JOINs zu einer neuen Tabelle?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 21:32:11462Durchsuche

How to Combine Data from Three MySQL Tables into a New Table Using JOINs?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn