Bei der Arbeit mit Datenbanken kann es vorkommen, dass Sie zwei Tabellen basierend auf einem Feld mit mehreren Kommas verbinden müssen -getrennte Werte. In solchen Fällen reicht eine herkömmliche Verknüpfung möglicherweise nicht aus.
Betrachten Sie das bereitgestellte Beispiel, in dem Sie eine Tabelle mit Filmen mit einer Kategoriespalte haben, die durch Kommas getrennte IDs von Kategorien enthält. Das Ziel besteht darin, eine Abfrage durchzuführen, die die Kategoriespalte aus der Filmtabelle ausschließt und stattdessen die passenden Kategorienamen aus der Kategorientabelle auswählt und sie in einem Array zurückgibt.
Um dies zu erreichen, können Sie die folgende Abfrage verwenden :
SELECT m.id, GROUP_CONCAT(c.name) AS categories FROM movies m JOIN categories c ON FIND_IN_SET(c.id, m.categories) GROUP BY m.id
Erklärung:
Die Funktion FIND_IN_SET prüft, ob ein Teilstring innerhalb eines Strings gefunden wird. Es gibt die Position der Teilzeichenfolge zurück, wenn sie gefunden wird, andernfalls 0. In diesem Fall wird geprüft, ob die Kategorie-ID aus der Kategorientabelle in der Kategorienspalte der Filmtabelle vorhanden ist.
Die Abfrage verwendet GROUP_CONCAT, um die Kategorienamen zu verketten, die von der JOIN-Operation für jede Film-ID zurückgegeben werden. Durch die Gruppierung nach m.id wird sichergestellt, dass Kategorien für jeden Film gruppiert werden.
Ausgabe:
Die Ausgabe der Abfrage sollte wie folgt aussehen:
| id | categories | |---:|-------------------| | 1 | Comedy, Drama | | 2 | Action, Drama | | 4 | Other, Dance |
Diese Technik verbindet effektiv die beiden Tabellen basierend auf der durch Kommas getrennten Liste der Kategorien, sodass Sie die Kategorienamen in einem Array-Format abrufen können.
Das obige ist der detaillierte Inhalt vonWie verbinde ich Tabellen mit einer durch Kommas getrennten Liste von Verknüpfungsfeldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!