正致力于帮助用户输入症状并患病的应用程序。
我有以下数据库表,其中包含与两个表关联的症状,疾病和疾病症状的信息,如下所示:
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
任何帮助将不胜感激。
答案 0 :(得分:0)
根据您有资格获得的症状,简单查询您的直接疾病症状表。无论有多少实际症状符合条件,该小组将根据疾病给出一个记录。最后,ORDER by DESCENDING命令会将最匹配的症状放在列表的顶部。
现在,简单地加入你的症状和疾病,以获得"价值"最终读取上下文输出的描述符。
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