Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich zwei Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?

Wie verbinde ich zwei Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-18 11:17:10987Durchsuche

How to Join Two Tables with Comma-Separated Values Using SQL?

Zwei Tabellen mit durch Kommas getrennten Werten verbinden

Problemstellung

Datenbanknormalisierung kann die Datenverwaltung erheblich verbessern, aber manchmal auch Strukturelle Einschränkungen verhindern eine Umsetzung. In dieser Frage wird eine Methode untersucht, um durch Kommas getrennte Werte in einer Tabelle mit Werten aus einer zweiten Tabelle zu verknüpfen, wenn eine Normalisierung keine Option ist.

Lösung

Im bereitgestellten Szenario Ziel ist es, die Werte in der Spalte „forDepts“ der Tabelle „Notizen“ mit den entsprechenden Namen aus der Tabelle „Positionen“ zu kombinieren. Die erwartete Ausgabe ist eine Liste von Notiz-IDs („nid“) mit den zugehörigen Abteilungsnamen, verkettet und durch Kommas getrennt.

Um dies zu erreichen, können wir die Funktionen FIND_IN_SET() und GROUP_CONCAT() verwenden. Hier ist die SQL-Abfrage:

SELECT  a.nid,
        GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM    Notes a
        INNER JOIN Positions b
            ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP   BY a.nid

Erklärung

  • Die Funktion FIND_IN_SET() prüft, ob ein Wert in einer durch Kommas getrennten Zeichenfolge vorhanden ist. In diesem Fall ermitteln wir damit, ob eine Abteilungs-ID aus der Positionstabelle in der Spalte „forDepts“ gefunden wird.
  • Die INNER JOIN-Klausel stellt sicher, dass nur übereinstimmende Zeilen aus beiden Tabellen kombiniert werden.
  • Die Funktion GROUP_CONCAT() verkettet die Namen der übereinstimmenden Abteilungen, sortiert nach ihren IDs, und trennt sie nach Kommas.

Zusätzliche Hinweise

Der bereitgestellte PHP-Code scheint nur den ersten Wert aus der Spalte „forDepts“ auszugeben. Dies ist wahrscheinlich auf den in der Abfrage verwendeten LEFT JOIN zurückzuführen. Um alle Werte abzurufen, sollten Sie stattdessen einen INNER JOIN verwenden.

Dieser Ansatz kann in Situationen angewendet werden, in denen Daten in einem durch Kommas getrennten Format gespeichert sind und Sie sie mit anderen Werten verknüpfen müssen, ohne die Datenbank umzustrukturieren.

Das obige ist der detaillierte Inhalt vonWie verbinde ich zwei Tabellen mit durch Kommas getrennten Werten mithilfe von 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