0
我有一个类似于Getting data from multiple tables into single row while concatenating some values的问题,但我无法理解它,而我是新手是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 我在那里创建了一个示例来演示我的问题。
我明白了你的意思,但是在这里有一个问题..可以说如果两个用户具有相同的名称,那么它将不会显示这两个用户..我编辑了示例[See Here](http:// sqlfiddle。 com /#!2/b75d3/1) –
长话短说,你能根据你的记录显示你想要的结果吗? –
除了这些重复的名称和电子邮件之外,基本上结果与小提琴输出相同...我想要所有任务,关联的关注者(以逗号分隔)和类别(以逗号分隔)... –