我有以下db表:comment和tag以及comment\u tag。它们之间存在着多对多的关系,实际上单个注解可以有多个标记,单个标记可以在多个注解中使用。让我们想象一下:
COMMENT
---------------
ID TEXT
1 comment1
2 comment2
3 comment3
4 comment4
TAG
---------------
ID NAME
1 bb
2 cc
3 ca
4 aa
5 ac
6 bd
COMMENT_TAG
---------------
ID_COMMENT ID_TAG
1 1
1 2
1 3
1 4
2 1
2 3
3 3
3 4
3 5
3 6
4 1
4 2
4 3
4 4
4 5
4 6
因此,在fe侧显示以下数据
Comment Tags
==================================
comment1 bb, cc, ca, aa
comment2 bb, ca
comment3 ca, aa, ac, bd
comment4 bb, cc ,ca, aa, ac, bd
我想按以下方式分类:
每个注解按字母顺序排列1个标签:
Comment Tags
==================================
comment1 aa, bb, ca, cc
comment2 bb, ca
comment3 aa, ac, bd, ca
comment4 aa, ac, bb, bd, ca, cc
2按标签的字母顺序对注解排序:
Comment Tags
==================================
comment4 aa, ac, bb, bd, ca, cc
comment3 aa, ac, bd, ca
comment1 aa, bb, ca, cc
comment2 bb, ca
您能告诉我们如何用sql实现它吗?或者告诉我们一些为这种用例排序的替代方法吗?
1条答案
按热度按时间sgtfey8w1#
加入表并按注解分组。
然后使用如下函数
LISTAGG()
对于oracle 11g+,要串联每个注解的所有标记:添加
ORDER BY
每种情况的条款:或:
请看演示。