【发布时间】:2021-02-20 06:44:33
【问题描述】:
我正在努力处理一个复杂的 SQL 查询,我想计算表 1 中的属性 x 在表 2 的字符串中出现的次数。 所以 t1 有一个 name 属性,t2 有一个参与者属性和一个 project 属性
ID | Name
---------
0 | Bob
1 | Bill
2 | Jill
T2
Project | Participants
-----------------
0 | Bob, Bill
1 | Bob, Jill
2 | Bob
Output
Bob 3
Bill 1
Jill 1
t2 中的参与者是一个字符串。有没有办法做到这一点?
【问题讨论】:
-
我建议将表 T2 设计为第一范式:link
-
您正在苦苦挣扎,因为查询会很复杂,那是因为表 T2 不是第一范式。如果“Participants”字符串来自某个外部来源,那么您无法控制它——这很好,但它不应该以这种方式存储在关系数据库中,如 Oracle。字符串应该被分解成它的组件标记,结果就是应该存储的内容。事实上,在每个查询中,您都必须自己进行“标记化”(规范化),这很复杂,而且您会遇到困难。