0

我有 2 个简单的表格 -FirmGroups. 我还有一个FirmGroupsLink用于在它们之间建立连接的表(连接是一对多的)。

Firm具有属性 - FirmID, FirmName,City

Groups具有属性 - GroupID,GroupName

FirmGroupsLink具有属性 - FrmID,GrpID

现在我想做一个查询,它将返回所有那些组比@num少的公司,所以我写

SELECT FirmID, FirmName, City
FROM (Firm INNER JOIN FirmGroupsLink ON Firm.FirmID =
FirmGroupsLink.FrmID) 
HAVING COUNT(FrmID)<@num

但它没有运行,我在 Microsoft Access 中尝试了这个,但它最终应该适用于 Sybase。请告诉我,我做错了什么。先感谢您。

4

1 回答 1

2

为了正确计数,您需要提供您正在计算的组。
如果你不分组,那么有子句,而且计数不能工作。

在这里,您按公司计数。事实上,因为您需要检索有关公司的信息,所以您按 FirmId、FirmName 和 City 进行分组,因此查询应该如下所示:

SELECT Firm.FirmID, Firm.FirmName, Firm.City
FROM Firm
    LEFT OUTER JOIN FirmGroupsLink 
        ON Firm.FirmID = FirmGroupsLink.FrmID
GROUP BY Firm.FirmID, Firm.FirmName, Firm.City
HAVING COUNT(FrmID) < @num

请注意,我将 a 替换为INNER JOINLEFT OUTER JOIN因为您可能还想要不属于任何组的 Firm 。

于 2013-04-24T09:45:50.527 回答