Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich zwei Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?
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
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!