2

wpdbでクエリを実行して、過去1週間で最も多くコメントされた投稿を取得しようとしています...何が間違っているのでしょうか?

$querystr = "SELECT comment_count, ID, post_title
        FROM $wpdb->posts wposts, $wpdb->comments wcomments
        WHERE wposts.ID = wcomments.comment_post_ID
        AND wcomments.comment_date >= CURDATE() - 7 
        GROUP BY wposts.ID
        ORDER BY comment_count DESC
        LIMIT 0 ,  10
 ";

 $pageposts = $wpdb->get_results($querystr);

クエリは、過去 1 週間にコメントされた上位のコメント付き投稿ではなく、常に上位のコメント付き投稿を取得するようです。

前もって感謝します。

4

3 に答える 3

2

これはうまくいくはずです:

global $wpdb;
$querystr = $wpdb->get_results("SELECT comment_count, ID,post_title 
    FROM $wpdb->posts 
    WHERE 
    post_status='publish' AND 
    post_date > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 WEEK) 
    ORDER BY comment_count DESC 
    LIMIT 0 , 10");
于 2011-06-25T09:53:56.650 に答える
2

Lonut は、日付範囲の問題と最も多くのコメントを処理しますが、過去 X 時間間隔でコメントされた最もコメントの多い投稿のみを選択しません。

これはそれを行う必要があります:

$querystr = "SELECT comment_count, ID, post_title
        FROM $wpdb->posts wposts, $wpdb->comments wcomments
        WHERE wposts.ID = wcomments.comment_post_ID
        AND wposts.post_status='publish'
        AND wcomments.comment_approved='1'
        AND wcomments.comment_date > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 WEEK) 
        GROUP BY wposts.ID
        ORDER BY comment_count DESC
        LIMIT 0 ,  10
 ";

編集: 日付のフィルターが YEAR から WEEK に変更されました

于 2011-06-25T10:29:32.693 に答える
1

comment_countテーブルのフィールドで注文していpostsます。グループに一致したコメントの数で並べ替えてみてください。

ORDER BY count(*) desc
于 2011-06-25T09:53:59.487 に答える