2017-06-23 70 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