Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果计数小于一个数字,则获取对象_Mysql_Sql_Sybase - Fatal编程技术网

Mysql 如果计数小于一个数字,则获取对象

Mysql 如果计数小于一个数字,则获取对象,mysql,sql,sybase,Mysql,Sql,Sybase,我有两个简单的表格-公司和集团。我还有一个表FirmGroupsLink,用于在它们之间建立连接(连接是一对多) 表Firm具有属性-FirmID,FirmName,City 表Groups具有属性-GroupID,GroupName 表FirmGroupsLink具有属性-FrmID,GrpID 现在我想做一个查询,它将返回所有比@num更少的组的公司,所以我写 SELECT FirmID, FirmName, City FROM (Firm INNER JOIN FirmGroupsLink

我有两个简单的表格-
公司
集团
。我还有一个表
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
选择FirmID、FirmName、City
FROM(Firm内部连接firmGroups在Firm.FirmID上链接=
FirmGroupsLink.FrmID)

拥有计数(FrmID)为了正确计数,您需要提供您所在的组。
having子句,而且如果不进行分组,计数也无法工作

这是按实数计算的。事实上,因为您需要检索有关公司的信息,所以您要按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
选择Firm.FirmID、Firm.FirmName、Firm.City
从公司
左外联接固定组链接
在Firm.FirmID=FirmGroupsLink.FrmID上
按Firm.FirmID、Firm.FirmName、Firm.City分组
有计数(FrmID)<@num

请注意,我将
内部连接
替换为
左侧外部连接
,因为您可能需要不属于任何组的固定连接。

回答得很好!这正是我想做的。谢谢你的帮助!