問題陳述
資料庫規範化可以大大增強資料管理,但有時結構性限制阻礙了實施。本問題探討了一種在無法進行標準化時將一個表中的逗號分隔值與第二個表中的值關聯起來的方法。
解
在提供的場景中,我們的目標是將Notes 表的「forDepts」欄位中的值與Positions 表中對應的名稱組合起來。預期輸出是註釋 ID ('nid') 列表,其中關聯的部門名稱以逗號連接並分隔。
要實現此目的,我們可以利用 FIND_IN_SET() 函數和 GROUP_CONCAT() 函數。以下是 SQL 查詢:
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
說明
附加註解
提供的 PHP 程式碼似乎只輸出「forDepts」欄位中的第一個值。這可能是由於查詢中使用了 LEFT JOIN。若要檢索所有值,請考慮使用 INNER JOIN。
此方法適用於資料以逗號分隔格式儲存並且需要將其與其他值關聯而無需重構資料庫的情況。
以上是如何使用 SQL 連接兩個以逗號分隔值的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!