首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何从MySQL中与之相关的症状中找出一种疾病?

我如何从MySQL中与之相关的症状中找出一种疾病?
EN

Stack Overflow用户
提问于 2018-05-18 10:05:57
回答 2查看 63关注 0票数 0

这是我在这一页上的第一个问题,很抱歉,如果我在某些事情上不够具体,或者我不能很好地解释我自己,而且,英语不是我的母语,所以我可以犯一些语法错误,所以我事先很抱歉。

好的,我在MySQL中使用一个数据库,我在试图获得一个查询并返回我想要的东西时遇到了问题,可能是因为我的知识还不够.

那么,我有两张表,一种是疾病,一种症状是多到多的关系,也就是一种疾病可以有一个以上的症状,反之亦然。这将导致生成另一个连接前两个表的表(该表称为diseases_diagnosis):

表diseases_diagnosis

好的,现在出现了问题,我想取一个id_enfermedade,它对应于我所传递的确切症状(如果它有多一个或少一个症状,它不应该返回那个疾病),我的意思是,我只是一个系统来返回与我所引入的确切症状相匹配的疾病。这是我得到的真正的桌子

问题是:如果我通过了症状2和6,它应该返回如下:

但我希望它只是返回,如果确切的症状匹配,我的意思是,如果有另一种疾病的症状相同的加上另一种,系统应该忽略它,例如:

如果我们通过: 1,2,3,4,5,6,7,它应该返回6

但是,如果我们通过1,2,3,4,5,6,它应该返回空或空,因为没有这些确切症状的疾病。

正如我前面已经提到的,我的SQL级别非常低,因此无法更接近。

当我无法应付这种程度的事情时,这有点令人沮丧,所以我希望有人能帮助我。

EN

回答 2

Stack Overflow用户

发布于 2018-05-18 10:25:52

一种方法是像这样使用group byhaving

代码语言:javascript
复制
SELECT id_enfermedade
FROM disease_diagnosis 
GROUP BY symptom_ID
HAVING SUM( symptom_ID IN (1, 2, 3) ) = 3 AND
       SUM( symptom_ID NOT IN (1, 2, 3) ) = 0;

或者,您可以将HAVING表示为:

代码语言:javascript
复制
HAVING GROUP_CONCAT(id_enfermedade ORDER BY id_enfermedade) = '1,2,3'

这使得将列表作为单个参数传递变得更加容易。

票数 2
EN

Stack Overflow用户

发布于 2018-05-18 10:15:20

看看你的桌子结构,不是应该这样吗?

代码语言:javascript
复制
SELECT Top 1 id_enfermedade FROM disease_diagnosis WHERE id_sintoma IN (1, 2, 3);

它会返回'a‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50408846

复制
相关文章

相似问题

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