一部の値を連結しながら複数のテーブルから単一の行にデータを取得するのと同様の問題がありますが、理解できず、初心者は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をご覧ください 。私の問題を示すために、そこに例を作成しました。