Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich Tabellen mit durch Kommas getrennten Wertfeldern in SQL?

Wie verbinde ich Tabellen mit durch Kommas getrennten Wertfeldern in SQL?

Susan Sarandon
Susan SarandonOriginal
2024-11-10 12:06:02401Durchsuche

How to Join Tables with Comma-Separated Value Fields in SQL?

Abfragen mehrerer Join-Felder mit durch Kommas getrennten Werten

In SQL beim Umgang mit Tabellen, die durch Kommas getrennte Listen (CSVs) enthalten In ihren Fachgebieten kann es eine Herausforderung sein, Verknüpfungen effektiv durchzuführen. In diesem Artikel wird ein bestimmtes Szenario untersucht, in dem die Kategorienspalte in einer Filmtabelle mehrere Kategorie-IDs enthält. Das Ziel besteht darin, diese vollständig auszuschließen und gleichzeitig die entsprechenden Kategorienamen aus einer Kategorientabelle abzurufen.

Die folgenden Tabellen veranschaulichen das Szenario :

Table categories:
-id-       -name-
1          Action
2          Comedy
4          Drama
5          Dance

Table movies:
-id-       -categories-
1          2,4
2          1,4
4          3,5

Um den gewünschten Join durchzuführen, können wir die Funktion find_in_set() in Verbindung mit einer Operation group_concat() verwenden. Hier ist die Abfrage:

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id

Abfrageerklärung:

  • find_in_set() prüft, ob ein angegebener Teilstring innerhalb eines Strings vorhanden ist, in diesem Fall, wenn a Die Kategorie-ID aus der Kategorientabelle ist in der CSV-Datei der Kategorienspalte in der Filmtabelle vorhanden.
  • Die Join-Klausel verknüpft die beiden Tabellen basierend auf der Bedingung find_in_set().
  • group_concat() verkettet alle übereinstimmenden Kategorienamen für jede Film-ID in einer einzigen Zeichenfolge.
  • Die Group-by-Klausel stellt sicher, dass die Ergebnisse nach Film-ID gruppiert werden und eine saubere und organisierte Ausgabe liefern.

Die resultierende Ausgabe zeigt die Film-IDs zusammen mit den entsprechenden Kategorienamen in einem Array-Format an. Dies ermöglicht einen einfachen Zugriff auf die relevanten Kategorien, ohne dass die CSV-Datei in der Filmtabelle dekodiert werden muss.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Tabellen mit durch Kommas getrennten Wertfeldern in SQL?. 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