2012-01-19 27 views
1

我需要一些幫助,以今天發生的一個小問題。結果重複,如果插入多於一個類別

要顯示在網站的最新文章中,我使用這個腳本,也是這個劇本排除某些類別(我的網站是不是在WordPress的,但分貝的名字在前面WP)

SELECT 
    ID, 
    post_title, 
    post_content, 
    post_date, 
    GROUP_CONCAT(DISTINCT post_category ORDER BY post_category DESC SEPARATOR ", ") as "categories" 

    FROM 
    wp_posts, 
    wp_term_relationships, 
    wp_term_taxonomy 

    WHERE wp_posts.post_status = "publish"  
    AND wp_term_relationships.object_id = id 
    AND wp_term_taxonomy.taxonomy= "category" 
    AND !(wp_term_taxonomy.term_taxonomy_id = 34472 || 
     wp_term_taxonomy.term_taxonomy_id = 34473 || 
     wp_term_taxonomy.term_taxonomy_id = 34474 || 
     wp_term_taxonomy.term_taxonomy_id = 17) 
    AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id 

    GROUP BY ID, post_title, post_content, post_date 
    ORDER BY wp_posts.post_date DESC LIMIT 150 

現在的問題是,我需要得到的只是今天的職位,所以我添加到這個腳本是:

AND DATE(post_date) >= CURRENT_DATE 

但添加此之後,我看到很多帖子說是在某些類別不僅一個,他們都表現出兩次或更多次。 有人能幫我解決這個問題嗎? 謝謝

請幫忙。

+0

試圖解釋你的數據庫模式更多一點。也許你可以用更簡單的查詢('SELECT * FROM wp_posts WHERE DATE(post_date)> = CURRENT_DATE()')嘗試它,然後添加更多的條件來找出哪一個是錯誤的。 –

+0

我有答案,thnx。 – JoinOG

回答

1

由於post_date是你GROUP'ing的一部分,你應該GROUP BY子句後添加下列權利和ORDER BY句之前(不使用它作爲一個WHERE條款):

... 
HAVING DATE(post_date) >= CURDATE() 
+0

您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第15行的'HAVING DATE(post_date)> = CURDATE()ORDER BY wp_posts.post_date DESC LIMIT 150''附近使用正確的語法,這是我得到的錯誤。 – JoinOG

+0

對不起,我犯了一個錯誤,它的工作原理。日Thnx – JoinOG