【发布时间】:2013-09-27 14:21:20
【问题描述】:
我有以下表格(仅列出所需的属性)
- 药品(身份证、姓名),
- 通用(ID,名称),
- med_gen(med_id 参考医学(id),gen_id 参考通用(id),效力)
样本数据
医药
- (1, 'Crocin')
- (2, 'Stamlo')
- (3, 'NT Kuf')
通用
- (1, '六氯定')
- (2, '苯甲酸甲酯')
med_gen
- (1, 1, '100mg')
- (1, 2, '50ml')
- (2, 1, '100mg')
- (2, 2, '60ml')
- (3, 1, '100mg')
- (3, 2, '50ml')
我想要与给定药物等效的所有药物。这些药物彼此等效,具有相同的通用性和相同的效力。在上面的示例数据中,所有三个都具有相同的仿制药,但只有 1 和三个对相应的仿制药也具有相同的效力。所以 1 和 3 是等效的药物。
我想找出给定药物 ID 的等效药物。
注意:一种药物可能有任意数量的仿制药。医学表有大约 102000 条记录,通用表大约 2200 条记录和效力表大约 200000 条记录。所以性能是关键。
注意 2:MySQL 中使用的数据库。
【问题讨论】:
-
你是说你不想包括2,即使它具有相同的仿制药,'六氯定'甚至具有相同的效力,因为'苯甲酸甲酯'的仿制药具有不同的效力?
-
@Steve 是的。因为只有当两种药物具有完全相同的仿制药和完全相同的效力时,它们才会等效。
标签: mysql sql many-to-many