0

私はそのベースを持っています:http://sqlfiddle.com/#!2/e5a24/2これはWordPressのデフォルトスキーマの省略形です。その例では不要なフィールドを切り取っています。

ご覧のとおり、結果には「カテゴリ 1」の 2 倍があります。私がやりたいのは、「カテゴリ 1」の最新のインスタンスのみを取得することです。

その SQL の正しい結果は次のとおりです。

POSTID  POSTTITLE   CATEGORYID  CATEGORYNAME    DATE
--------------------------------------------------------------
2   2st Game    2   Category 2  January, 01 2013 00:00:00+0000
3   1st Game    1   Category 1  January, 15 2013 00:00:00+0000

「CategoryID」でグループ化を試みましたが、結果にカテゴリ 1 のインスタンスが 1 つしか表示されませんが、「カテゴリ 1」に属する最も初期のレコードではなく、古いものが取得されます。

それについて何か考えがありますか、どうすれば修正できますか?

4

3 に答える 3

4
SELECT  a.ID AS PostID,
        a.post_title AS PostTitle,
        c.meta_value AS CategoryID,
        d.name AS CategoryName,
        a.post_date AS Date
FROM    wp_posts a
        INNER JOIN
        (
            SELECT  post_title, MAX(post_date) max_date
            FROM    wp_posts
            GROUP   BY post_title
        ) b ON a.post_title = b.post_title AND
                a.post_date = b.max_date
        INNER JOIN  wp_postmeta c
            ON a.ID = c.post_ID
        INNER JOIN wp_terms d
            ON c.meta_value = d.term_ID
WHERE   c.meta_key = 'matchdayTeamsCategory'
于 2013-02-22T17:34:17.350 に答える
2

GROUP BY で MIN(Date) を使用する必要があります

于 2013-02-22T17:33:50.497 に答える
2

日付順DESCを使用して、「カテゴリ1」を最新のものにします

于 2013-02-22T17:35:59.437 に答える