2013-04-15 15 views
0

我有這樣的查詢:選擇其中的結果數超過X

SELECT 
    oh.date_added AS date_shipped, 
    o.date_added 
FROM 
    ".DB_PREFIX."order o , ".DB_PREFIX."order_history oh 
WHERE 
    o.order_id = oh.order_id 
    AND oh.order_status_id = 3 

我想要做的是隻顯示的結果,如果有X或多行與特定的日期。

所以,如果X=5有來自2013-04-0 1三個條目,那麼他們將無法顯示,但如果從2013-04-02然後九個項目(或任何>= 5),這些結果將包括在查詢中。

一旦滿足要求,我希望查詢限制爲匹配日期中的那一組行。

有誰知道我該如何做到這一點?

回答

2

您可以添加嵌套SELECT計算這些:

SELECT 
    oh.date_added AS date_shipped, 
    o.date_added 
FROM 
    ".DB_PREFIX."order o , ".DB_PREFIX."order_history oh 
WHERE 
    o.order_id = oh.order_id 
    AND oh.order_status_id = 3 
    AND (SELECT COUNT(*) FROM ".DB_PREFIX."order o2 
       WHERE o2.date_added>"2013-04-01") > 5 

或加入表本身,沿線

SELECT 
    o.date, 
    COUNT(*) cnt 
FROM 
    order o 
    JOIN order o2 ON o2.date = o.date AND o2.id != o.id 
WHERE 
    your conditions 
GROUP BY o2.id 
HAVING cnt > 5