0

一部の値を連結しながら複数のテーブルから単一の行にデータを取得するのと同様の問題がありますが、理解できず、初心者はSQLクエリです。テーブルがほとんどなく、それらを結合して、連結されたデータを連続して取得する必要があります。説明は次のとおりです。

表 1 - タスク (id、タイトル、user_id)
id タイトル user_id tree_id
-- ------ ------- -------
1 テストタスク 1 20

表 2 - task_follower(id,user_id,task_id)
ID user_id task_id
-- ---------- -------
1 1 1

表 3 - account_user(id,name,email)
id名メール
-- ---- -----
1 熊手 kumar3180@gmail.com

表 2 - カテゴリ (id、カテゴリ)
ID カテゴリ
-- -------
1 プロジェクト1

表 2 - task_category(id,user_id,task_id)
id タスク ID カテゴリ ID
-- ---------- -------
1 1 1

そして、私が実行するクエリは次のとおりです。

    SELECT a.*, GROUP_CONCAT(b.name SEPARATOR ',') AS member_names, GROUP_CONCAT(b.email SEPARATOR ',') AS member_emails, GROUP_CONCAT(DISTINCT d.category) SEPARATOR ',') AS カテゴリ FROM タスク AS a INNER JOIN task_followers AS c ON a.id = c.task_id INNER JOIN account_user AS b ON c.user_id = b.id INNER JOIN task_category AS i ON a.id = i.task_id INNER JOIN category AS d ON i.category_id = d. id WHERE a.id = 1 AND a.user_id = 1 AND GROUP BY a.id

このクエリの結果として、次のようになります。

ID タイトル user_id tree_id member_names member_emails
--- ----- ------- ------- ------------- -------------
1 テスト タスク 1 20 rakesh,rakesh kumar3180@gmail.com,kumar3180@gmail.com

名前とメールアドレスが重複している理由がわかりません。この問題を解決するのを手伝ってください。また、概念的に間違った場所を説明していただけませんか?

タスクに関連付けられたカテゴリの数が複数の場合、この問題が発生することに気付きました。http://sqlfiddle.com/#!2/b96eb/1をご覧ください 。私の問題を示すために、そこに例を作成しました。

4

1 に答える 1

1

次のようDISTINCTに内部で使用できます。GROUP_CONCAT

GROUP_CONCAT(DISTINCT b.email SEPARATOR ',') AS member_emails 
于 2013-08-02T12:23:45.470 に答える