有以下3個表:MySQL的 - 串聯,並加入
- 用戶(ID,姓名)
- 項目(編號,名稱)
- user_to_project(USER_ID,PROJECT_ID)
每用戶可以分配給多個項目,並將其存儲在user_to_project表中。我想在一個字段中用逗號分隔一個用戶名和他分配給的所有項目。我試過這樣的事情:
SELECT
users.id AS 'ID',
users.name AS 'Name',
(SELECT GROUP_CONCAT (projects.name SEPARATOR ', ')
FROM user_to_project
INNER JOIN projects ON (projects.id = user_to_project.project_id)
INNER JOIN users ON (users.id = user_to_project.user_id)) AS 'Projects'
FROM users
它讓我在每一行都分配了不是我想要的項目。如何解決這個問題?
爲了讓每一個USER_ID結果行,你必須使用'GROUP BY user_id'彙總記錄。 –
這不是唯一的問題,我不明白這是如何工作的,即使沒有關聯條件的外部查詢,應該拋出一個錯誤'不止一個row..' @ThorstenKettner – sagi
@sagi:你說得對,這不是唯一的錯誤,但它是從什麼開始的:-)子查詢只返回一個值:所有項目在所有記錄上的共鳴。 –