【问题标题】:Postgresql Query: How to return all parent records when certain criteria for all child records are metPostgresql查询:当满足所有子记录的某些条件时如何返回所有父记录
【发布时间】:2017-11-26 12:57:04
【问题描述】:

我正在处理一个 SQL 表 'contacts',其中包括字段 'contact_id''account_id''approved'

帐户是作为潜在客户的公司,每个帐户有多个联系人。如果这些联系人中的任何一个获得批准(符合某些标准),我们就可以向该帐户出售。 'approved' 字段是布尔值。

我正在尝试编写一个查询,该查询将为未批准联系人的帐户返回 account_ids。我尝试过使用ANYBOOL_AND 和几种类型的分组和计数,但没有成功。任何建议都非常感谢。

我的桌子是这样的:

ACCOUNT_ID  CONTACT_ID  APPROVED
Apple       123         TRUE
Apple       321         FALSE
Pear        456         FALSE
Pear        654         FALSE
Orange      789         TRUE
Orange      987         TRUE

我希望我的查询返回

ACCOUNT_ID
Pear

因为这是唯一一个所有记录都是错误的帐户。

【问题讨论】:

  • 您能给我们提供一些示例数据和预期结果吗?
  • 我的修改有用吗?

标签: sql postgresql


【解决方案1】:

您可以尝试使用 NOT EXISTS

SELECT DISTINCT account_id 
FROM contacts a
WHERE 
    NOT EXISTS (
    SELECT 1 
    FROM contacts b
    WHERE a.account_id = b.account_id AND b.approved = TRUE)

我已经创建了一个演示 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2021-12-26
    • 2017-01-30
    相关资源
    最近更新 更多