2013-02-07 44 views
1

有沒有人有關於如何解決這個查詢的任何想法?Mysql - 微調HAVING

有一個客戶表和一張牌照表。每個客戶可以有多個許可證在不同的時間到期,有些許可證已經過期,有些還沒有過期。如果我要選擇所有的客戶至少有一個有效的許可證,我做的:

SELECT * FROM License 
LEFT JOIN Customer USING (customer_id) 
GROUP BY Customer.customer_id 
HAVING License.expiry > NOW() 

但我怎麼得到誰擁有客戶只到期的許可證?如果我現在執行「有License.expiry < NOW」,它會發現許可證過期的客戶沒問題,但它不會排除同時擁有有效許可證的客戶。我需要選擇只有過期許可證的客戶。

「沒有」可以解決這個問題,但有沒有這樣的事情......

任何幫助將不勝感激。

回答

0

嘗試此查詢 -

SELECT * FROM License 
    LEFT JOIN Customer USING (customer_id) 
GROUP BY 
    Customer.customer_id 
HAVING 
    COUNT(*) > 0 AND COUNT(*) = COUNT(IF(License.expiry > NOW(), 1, NULL)) 
+0

偉大的作品,謝謝。只需要將>符號更改爲<。 – user2050623