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

标签 mysql

正在开发一款可帮助用户输入症状并患上疾病的应用程序。

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

DISEASE_T   SYMPTOMS    disease-symptoms
==========  ==========  ========
DISEASE_ID  SYMPTOM_ID  DISEASE_ID
VALUE       VALUE       SYMPTOM_ID

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

例如,用户选择症状为1,2,3(咳嗽、感冒、头痛)

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

任何帮助将不胜感激。

最佳答案

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

现在,简单地加入您的症状和疾病即可获取最终读取上下文输出的“值”描述符。

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

关于mysql - 如何从症状中找到疾病的最佳匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37926652/

相关文章:

具有自定义选项的 Mysqldump

PHP PDO 多表连接

mysql - Heroku 安装亚马逊 RDS : mysql or mysql2?

php - 当从 php 执行时,mysql 导入的整理不同

mysql - 将记录序列存储到数据库中的特定 ID

php mysql select函数返回0但没有错误

PHP,Mysql : Get hour, 分钟并存储在变量中

C++ Mysql查询ascii格式

php - 我正在尝试通过 PHP 在 HTML 文件中显示来自 MYSQL 的图像。我的代码有什么问题吗?

mysql - 如何空检查 MySQL JSON 列属性?