从1个表通过3个内连接多次选择同一列

时间:2013-10-29 13:30:12

标签: mysql

在医疗数据库上工作。 我们有处方表,诊断表和物品表(每一项,而不仅仅是药物)。

在诊断表中,是一组名为med#(当前为13,可能会增加)的列,列出了患者开出的所有各种药物。药物名称存储在物品表中(因为多语言)要检索药物名称1~13,我使用以下查询。

它有效,但我想它可能效率不高。 有没有更好的方法来重写这个? 或者甚至可能重新设计数据库? 它仍处于早期阶段,数据库设计尚未锁定。

select d.name_en, e.name_en
from
    diag a
    inner join
pres c
    on a.med1 = c.id
    inner join
pres b
    on a.med2 = b.id
    inner join
items d
    on b.id = d.id
    inner join
items e
    on c.id = e.id
where a.id = 1

1 个答案:

答案 0 :(得分:0)

您应该有一个包含患者信息的表格和另一个包含药物信息的表格。这样就可以在不重新设计表格的情况下增加药物的数量。

在药物信息表中,应该有一列用于参考项目表中的项目,以及一列用于在患者信息表中引用患者。这将是您的药物信息表的主要关键。