如何将查询结果限制为具有 2 个或更多关联帐户的组织

How to Limit Query Result to Organizations with 2 or More Accounts Associated with it

我有以下代码,returns 为没有关联地址的子组织(父组织的)结果。然而,这 returns 2,000 多行,其中许多有 0 或 1 个帐户与之关联。

我想做的是将查询编辑为显示与子组织关联的帐户数量为 2 个或更多的结果。

在我们的数据库中,在 JOIN 语句中关联帐户和组织 table 的主键是:

organizations.id = accounts.organization_id

帐户 table 的主键是 accounts.id

我试图解决这个问题,但无济于事。如果有人可以帮助提供解决方案,将结果限制为帐户数量等于或大于 2 的子组织。

SELECT DISTINCT
  organizations.id AS org_id,
  organizations.name AS org_name,
  parent.id AS parent_org_id,
  parent.name AS parent_org_name
FROM
    organizations 
  INNER JOIN organizations parent 
    ON
    organizations.parent_org_id = parent.id
  LEFT JOIN addresses sub_addresses 
    ON
    sub_addresses.addressable_type = 'Organization'
    AND sub_addresses.is_current = 1
    AND sub_addresses.addressable_id = organizations.id
  LEFT JOIN addresses p_addresses 
    ON
    p_addresses.addressable_type = 'Organization'
    AND p_addresses.is_current = 1
    AND p_addresses.addressable_id = parent.id
WHERE
  sub_addresses.id is null
ORDER BY
  parent.name, 
  organizations.name

您需要在 where 子句中再添加一个联接或子查询,这将使您的组织至少拥有 2 个或更多帐户。下面是加入版。

FROM organizations p
INNER JOIN organizations o ON o.parent_org_id = p.id
INNER JOIN (Select a.organization_id,Count(distinct a.id) as num_of_accounts
            FROM accounts a 
            GROUP BY a.organization_id
            HAVING Count(distinct a.id) >= 2) accnts ON accnts.organization_id = o.id