如何将查询结果限制为具有 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
我有以下代码,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