2017-06-23 60 views
0

我正在使用SQL表'contacts',其中包含字段'contact_id','account_id''approved'Postgresql Query:如何在满足所有子记录的某些条件时返回所有父记录

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

我想写一个查询,将返回没有联系人被批准的帐户的account_ids。我试图玩ANY,BOOL_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 

因为这是所有的记录都是假的唯一帐户。

+0

你能为我们提供一些示例数据和预期的结果? – GurV

+0

我的编辑有帮助吗? – strider

回答

0

你可以尝试使用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

相关问题