首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从症状中找到疾病的最佳匹配?

如何从症状中找到疾病的最佳匹配?
EN

Stack Overflow用户
提问于 2016-06-20 23:46:14
回答 1查看 566关注 0票数 0

我工作在一个应用程序,帮助用户输入症状和获得疾病。

我有以下数据库表,其中包含有关症状、疾病和疾病症状的信息,这两个表关联在一起,如下所示:

代码语言:javascript
运行
复制
DISEASE_T   SYMPTOMS    disease-symptoms
==========  ==========  ========
DISEASE_ID  SYMPTOM_ID  DISEASE_ID
VALUE       VALUE       SYMPTOM_ID

我想搜索用户选择的症状,这是疾病症状表中的症状id数组,并返回前5个匹配的疾病id,其中大多数症状与每种疾病匹配。

例如,用户选择的症状是1、2、3(咳嗽、伤风、头痛)

代码语言:javascript
运行
复制
DISEASE_T      SYMPTOMS_T  disease-symptoms
=========      ==========  ===============
1,malaria       1,cough          1,1
2,tuberculosis  2,cold           1,2
3,typhoid       3,headache       2,2
                                 2,3
                                 3,1
                                 3,2
                                 3,3

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-06-21 01:31:50

根据您感兴趣的符合条件的症状,对直接疾病症状表进行简单查询。group by将为每个疾病提供一个记录,无论有多少实际症状合格。最后,按降序排序将把最匹配的症状放在列表的顶部。

现在,简单地连接到您的症状和疾病,以获得最终读取上下文输出的“值”描述符。

代码语言:javascript
运行
复制
select 
      DS.Disease_ID,
      D.Value as Disease,
      group_concat( S.Value SEPARATOR ',' ) as Symptoms,
      count(*) as SymptomsMatching
   from
      Disease-Symptoms DS
         JOIN Symptoms_T S
            on DS.Symptom_ID = S.Symptom_ID
         JOIN Disease_T D
            on DS.Disease_ID = D.Disease_ID
   where
      DS.Symptom_ID IN ( 1, 2, 3 )
   group by
      DS.Disease_ID
   order by
      count(*) desc,
      D.Value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37926652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档