检索sql结果,按类别分组

e5njpo68  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(302)

我的sql水平很低,我来寻求你的帮助,因为我被阻止了。
因此,我有一个包含两个表的数据库,一个article表和一个category表。在我的article表中,我有一个字段,它以json格式包含它所属类别的id。
从示意图上看,categories表如下所示:

|    Name    |  id |
|    Cat1    |  1  |
|    Cat2    |  2  |
|    Cat3    |  3  |

以及表格文章:

|     Title     |   id  |       Categories      |
|     Title1    |   1   |         [1,2]         |
|     Title2    |   2   |         [1,3]         |
|     Title3    |   3   |         [2,3]         |

目前,我检索我的文章如下:

SELECT *
FROM articles a
JOIN categories c
ON JSON_CONTAINS(a.categories, CAST(c.id AS CHAR))

然后在php中,我按类别对它们进行分组。但是我发现这个解决方案不是很干净。
因此,我想知道sql查询是否可以通过以下方式检索已按类别分组的文章列表:
第1类
-第1条
-第2条
第2类
-第1条
-第3条
第三类
-第2条
-第3条

rt4zxlrg

rt4zxlrg1#

创建一个新表是更好的数据库设计 ArticleCategories 列出每个文章类别: ArticleID, CatID 其中一个articleid可以有多个catid。。。
现在您可以将多个类别关联到一篇文章,并使用sql轻松地搜索这个新数据库,以查找类别和文章之间的关联。

SELECT    c.category, STRING_AGG(a.title, ',')
FROM      articles a
LEFT JOIN articleCategories ac
       ON a.id = ac.articleID
LEFT JOIN categories c
       ON c.id = ac.categoryID
GROUP BY  c.category

相关问题