这似乎是一个常规操作,但我似乎找不到如何做到这一点。
我有一个连接查询。
SELECT a.nom_batim, COUNT(b.maxten) AS NumFaulty
FROM tblTrials AS b, tblRooms AS a
WHERE b.batiment = a.batiment
AND b.maxten > 10
GROUP BY a.nom_batim
ORDER BY a.nom_batim
我希望只返回tblTrials条目的计数。然而,由于我不知道如何编写代码,它目前正在计算所有出现的b.maxten > 10
和b.batiment = a.batiment
的次数。我在表格中有1个实际的b.maxten > 10
出现,但有231个b.batiment = a.batiment
出现(这些表格设置得很糟糕,不是我的选择;对我来说,这些表格被认为是只读的),因此它返回了231个计数。
如何正确地COUNT(b.maxten)
,但仍以用户友好的方式显示a.nom_batim
作为batiment
ID字段的表示形式?(a.nom_batim
是建筑物#batiment
的完整名称)
更新
到目前为止,这就是我所做的..
SELECT a.nom_batim, COUNT(b.batiment) AS NumFaulty
FROM (SELECT DISTINCT nom_batim, batiment FROM tblRooms) AS a
INNER JOIN tblTrials AS b ON a.batiment = b.batiment
WHERE b.maxten > 10
GROUP BY a.nom_batim
ORDER BY a.nom_batim
它可以工作,但当我只需要从tblRooms获取最多30个值时,似乎会占用大量资源,但必须查询所有5000多行,仅选择不同的batiment
值。是否没有不使用batiment
表tblBatiment: batiment,nom_batim
就能完成这项任务的方法? 我知道这是最好的方法,但我无法访问。
batiment
作为聚合函数的一部分,这对用户不友好。我需要使用FROM(SELECT...)填充nom_batim,而不是在tblTrials上使用FROM(SELECT...)。不知道为什么,但它有效。 - StuckAtWork