首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从表中选择多个不同的值,并为表中的匹配计算它们

从表中选择多个不同的值,并为表中的匹配计算它们
EN

Stack Overflow用户
提问于 2016-05-13 16:50:29
回答 2查看 68关注 0票数 0

我在试图找出如何选择多个具有多个值的记录时遇到了一些困难。让我试着把它分解。

我有两张桌子。

表1:疾病

表2:症状

我想做的是,当用户输入一个症状时,它会遍历疾病表,找出与它相关的匹配症状,然后返回给出症状的疾病。

到目前为止,这是一个SQL查询:

代码语言:javascript
运行
复制
select a.diseases_id, a.disease_name
from diseases a, symtoms b 
where a.diseases_id = b.diseases_id
and b.symtom_description like '%Cough%' AND b.symtom_description like '%Sore throat%';

现在的问题是这个SQL查询什么都不返回,但是如果删除和语句,它会返回所有在其症状中包含“咳嗽”的疾病,但这不是我想要的。我应该能够选择一组症状,如果一个疾病有所有的症状,并且它们匹配,它将返回疾病。对于我发布的查询,应该返回“胃食管反流”,因为这种疾病只包含咳嗽喉咙痛。

有人能给我指点如何使这件事成功吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-13 17:04:57

没有一行,其中包含“咳嗽”“嗓子痛”,所以您当然会得到一个空的结果。

我会尝试这样的方法(未经测试):

代码语言:javascript
运行
复制
select a.diseases_id, a.disease_name, b.symtom_description
from diseases a, symtoms b 
where a.diseases_id = b.diseases_id
and (b.symtom_description like '%Cough%' OR b.symtom_description like '%Sore throat%')
group by a.diseases_id
having count(a.diseases_id)=2
票数 2
EN

Stack Overflow用户

发布于 2016-05-13 17:44:21

上面的查询可以使用下面的ansi兼容连接语句编写。

代码语言:javascript
运行
复制
SELECT a.diseases_id, a.disease_name, b.symptom_description
FROM diseases AS a JOIN symptoms AS b 
     ON a.diseases_id = b.diseases_id
WHERE b.symptom_description like '%Cough%' OR b.sypmtom_description like '%Sore throat%'
 GROUP BY a.diseases_id
    HAVING COUNT(a.diseases_id) = 2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37215423

复制
相关文章

相似问题

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