【问题标题】:Finding duplicates in a 1:n relation在 1:n 关系中查找重复项
【发布时间】:2020-01-17 07:43:10
【问题描述】:

可能是一个新手问题,但我完全空白:我有一个处方数据库,其中有两个表:

**prescriptions**, with amongst others a field ID (primary key)

**lines**, amongst others with fields ID_P (foreign key) and name (my target values)

这两个表以 1(prescriptions):n(lines) 关系链接。

我需要确定是否已经以这种组合方式在这些表中输入了一组给定的名称,但可能以不同的顺序输入。

简短示例:给定一个包含 A、B、C 行的处方,是否已经有一个处方与 A、B、C 行、B、A、C 顺序或这些行的任何排列完全一致?

我的想法最终是在表格处方中插入一个搜索字段,其中包含属于该处方的表格“行”的所有字段“名称”的内容,但这似乎并不理想。

知道如何实现这个目标吗?

示例:表格行:

+----+------+----------------------+
| ID | ID_P |          name        | 
+----+------+----------------------+
| 1  | 1    |Metronidazol          |
| 2  | 1    |Erythromycin          |
| 3  | 1    |Basiscreme            |
| 4  | 2    |Metronidazol          |
| 5  | 2    |Vaseline              |
| 6  | 3    |Erythromycin          |
| 7  | 3    |Clotrimazol           |
| 8  | 3    |Basiscreme            |
| 9  | 4    |Clotrimazol           |
| 10 | 4    |Basiscreme            | 
+----+------+----------------------+

输入名称 Basiscreme + Metronidazol + Erythromycin 应该会成功,Metronidazol + Basiscreme 不会。或者:克霉唑 + Basiscreme 很受欢迎,红霉素 + basiccreme 不是。

【问题讨论】:

  • 示例:表“行”由“1”、“红霉素”、“1”、Basiscreme“”、“2”、“甲硝唑”、“2”、“凡士林”、“3”组成,克霉唑","3"甲硝唑","3",Basiscreme"。输入名称“Basiscreme”、“Metronidazol”、“Clotrimazol”应该会成功,而“Metronidazol”+“Basiscreme”则不会。
  • 使用ozh.github.io/ascii-tables 并编辑您的问题以提供示例数据和预期结果。
  • 从您的样本数据中,请显示所需结果的表格输出。 输入名称不清楚您的意思。

标签: sql ms-access duplicates


【解决方案1】:

您可以按名称分组并返回计数 >= 3 的那些。

select
    name, count(*)
from
    lines
where
    name in ('Basiscreme', 'Metronidazol', 'Erythromycin')
group by 
    name
having 
    count(*) >= 3;
姓名 | (无列名) :--------- | ---------------: 基础面霜 | 3

db小提琴here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多