给定一个“事件”表,其中每个事件可能与零个或多个“演讲者”和零个或多个“术语”相关联,这些记录通过连接表与事件相关联,我需要生成一个包含所有事件的表和一列在代表与每个事件关联的“speaker_names”和“term_names”列表的每一行中。
但是,当我运行查询时,speaker_names 和 term_names 值存在重复,因为连接表为每个发言者和事件的术语生成每个关联的行:
1|Soccer|Bobby|Ball
2|Baseball|Bobby - Bobby - Bobby|Ball - Bat - Helmets
3|Football|Bobby - Jane - Bobby - Jane|Ball - Ball - Helmets - Helmets
group_concat 聚合函数能够使用'distinct',它消除了重复,但遗憾的是它不支持我真正需要的自定义分隔符。我留下了这些结果:
1|Soccer|Bobby|Ball
2|Baseball|Bobby|Ball,Bat,Helmets
3|Football|Bobby,Jane|Ball,Helmets
我的问题是:有没有办法可以形成查询或更改数据结构以获得我想要的结果?
请记住,这是我需要的 sqlite3 查询,我无法添加自定义 C 聚合函数,因为这是用于 Android 部署的。
我创建了一个要点,让您可以轻松测试可能的解决方案:https ://gist.github.com/4072840