Sql 计数不正确

Sql 计数不正确,sql,Sql,我对我的问题有疑问。我将用一个例子来代替。因此,对于名为“脓肿”的疾病名称,在我的诊断表中已经诊断了两次,但我只得到了1的计数。然而,当我使用诊断表中的diseaseid检查时,我得到2。请在下面重建我的答案 问题: 列出所有疾病的名称,并计算每种疾病在某一时间被诊断的次数 诊所。该列表列出了一些很少被识别的疾病,因此只显示那些具有 诊断计数小于5。注:零小于5。提供SQL查询和数据查询 结果的可视化 我的答覆是: SELECT disease.name, COUNT(*) AS number_

我对我的问题有疑问。我将用一个例子来代替。因此,对于名为“脓肿”的疾病名称,在我的诊断表中已经诊断了两次,但我只得到了1的计数。然而,当我使用诊断表中的diseaseid检查时,我得到2。请在下面重建我的答案

问题: 列出所有疾病的名称,并计算每种疾病在某一时间被诊断的次数 诊所。该列表列出了一些很少被识别的疾病,因此只显示那些具有 诊断计数小于5。注:零小于5。提供SQL查询和数据查询 结果的可视化

我的答覆是:

SELECT disease.name, COUNT(*) AS number_of_disease_diagnosed
FROM disease
WHERE diseaseid IN (SELECT DISTINCT diseaseid FROM diagnosed)
GROUP BY disease.name
HAVING COUNT(*) <= 5
UNION
SELECT diseaseid,0
FROM disease
WHERE diseaseid NOT IN (SELECT DISTINCT diseaseid FROM diagnosed);

我认为问题在于你的提问。正如我所暗示的,您应该使用联接,而不是在子查询中使用

具体来说,我将使用外部联接进行此查询,例如:

选择disease.name,countdiagnostics.diagnostics作为计数 从…起 病 诊断为疾病的左侧外部联接。diseaseID=诊断为。diseaseID 分组 疾病名称 有
CountDiagnostics.Diagnostics为我们提供模式,这样我们就可以看到跨表链接的基数了?疾病名称是疾病的关键吗?如果是这样的话,为什么您希望在disease中每行有多个disease.name?您的查询有很多问题。请向我们展示该疾病和诊断表的最小数据样本。为什么要撤消@草莓编辑?添加了更多信息。首先,您可能需要内部连接而不是内部连接。第二,你应该指定你正在使用的RDBMS,但不要标记它们,不要标记不相关的产品。我删除了那些标签,请随意放回其中一个,用于您正在使用的dbms。