0

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

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

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

organizations.id = accounts.organization_id

并且帐户表上的主键是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
4

1 回答 1

1

您需要在 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
于 2020-05-28T16:22:53.680 回答