MySQL查询,包含从文章表到类别

时间:2016-11-30 13:54:24

标签: mysql

我有一个MySQL数据库,主表为“articles”(artID,artName)。

我还有一个包含真实标题和id(catID,catTitle)的“类别”的表格。

然后是表格“articles_categories”,其中存储了连接ID(artID,catID)。

在了解了一些MySQL之后......我至少得到了正确的相关行。

但是,文章可能有超过1个类别。

表articles_categories可以有例如行:

artID,catID

0001,0100
0001,0105
0001,0120

0002,0104
0002,0120

0003,0110

0004,0205
0004,0250
0004,0401

这是我不幸得到的。我得到的每篇文章更多的是1个类别连接超过1行。

但我希望每篇文章只有1行,并且单个字段中的类别用分号分隔。

这就是我得到的:

Article, Category
"apple", "fruit"
"apple", "food"
"pepsi","drink"
"pepsi","nonalcolic"
"pepsi","softdrink"
"chair","wood"
"chair","furniture"
"chair","kitchen"

但这就是我想要的:

Article, Category
"apple", "fruit, food"
"pepsi","drink, nonalcolic, softdrink"
"chair","wood, furniture, kitchen"

这是我的SQL QUERY:

 SELECT a . * , ac . * , c . *
 FROM articles a, articlescategories ac, categories c
 WHERE a.artID = ac.artID AND ac.catID = c.catID

1 个答案:

答案 0 :(得分:0)

您需要使用group_concat

SELECT a . * , GROUP_CONCAT(c.category_name)
 FROM articles a, articlescategories ac, categories c
 WHERE a.artID = ac.artID AND ac.catID = c.catID
GROUP BY a.artID

category_name 是您的类别名称。您必须使用类别名称

更改此设置