0
我有一個類似於Getting data from multiple tables into single row while concatenating some values的問題,但我無法理解它,而我是一個新手是sql查詢。我有很少的表,我必須加入他們,並連續獲得一些連接的數據。說明是如下:我的Sql Group Concat返回重複行
Table 1 - tasks(id,title,user_id) id title user_id tree_id -- ----- ------- ------- 1 test task 1 20 Table 2 - task_follower(id,user_id,task_id) id user_id task_id -- ------- ------- 1 1 1 Table 3 - account_user(id,name,email) id name email -- ---- ----- 1 rakesh [email protected] Table 2 - category(id,category) id category -- ------- 1 Project1 Table 2 - task_category(id,user_id,task_id) id task_id category_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 categories FROM tasks 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 title user_id tree_id member_names member_emails --- ----- ------- ------- ------------- ------------- 1 test task 1 20 rakesh,rakesh [email protected],[email protected]
我無法理解爲什麼名字和電子郵件是重複的?請幫我解決這個問題,如果你能解釋我在概念上哪裏出錯了?
我注意到,當與任務相關聯的類別數量超過一個時,就會發生此問題。請看看http://sqlfiddle.com/#!2/b96eb/1 我在那裏創建了一個示例來演示我的問題。
但是,這是不可能的名字。由於名字不能是唯一的..其實我已經顯示逗號分隔的名稱,如果名稱是沒有可用的電子郵件..是否有可能? –
@ user2645698名稱不唯一許多可以具有相同的名稱。並在你的代碼中,你已經公佈了你應該使用不同的,因爲馬哈茂德告訴你 –
@ user2645698 - 對不起,但我不明白你,你可以請一些額外的示例數據解釋這個問題,你也可以更新[**此演示**](http://sqlfiddle.com/#!2/dd1d2/1)顯示此問題。 –