0

カテゴリテーブルのすべてのカテゴリを出力するSQLクエリを作成しようとしています。カテゴリに接続されているすべてのスレッドをカウントするだけでなく。これで問題なく動作しますが、最新のスレッドの日時を表示する必要がある新しいフィールドを追加しようとすると、うまくいきません。

これはこれまでの私のSQLです:

SELECT categories.category_name, 
       categories.category_id, 
       COUNT(threads.thread_category_id) AS 'threadCount', 
       threads.thread_datetime
FROM   categories LEFT OUTER JOIN 
       threads ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id, threads.thread_datetime
ORDER BY threads.thread_datetime DESC

これにより、次のようになります。

ここに画像の説明を入力してください

しかし、実際に出力したいのはこれです。また、ORDER BYに基づいて、スレッドテーブル内の最新のスレッドのthread_datetimeを含むフィールドもあります。

ここに画像の説明を入力してください

私はさまざまなJOINSや、他の多くのリソースを試してきました。うまくいく方法を見つけることができないようです。

4

3 に答える 3

1

MAX()各グループの最新の日付を取得するために使用できます。

次のクエリを試してください。

SELECT 
    categories.category_name, 
    categories.category_id, 
    COUNT(threads.thread_category_id) AS 'threadCount', 
    MAX(threads.thread_datetime)
FROM categories 
LEFT OUTER JOIN threads 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id
于 2013-03-18T11:01:27.967 に答える
1

これを試してください(日時をグループから選択の集約された部分に移動しました)

SELECT categories.category_name, categories.category_id, 
COUNT(threads.thread_category_id) AS 'threadCount', MAX(threads.thread_datetime)
FROM categories LEFT OUTER JOIN threads ON categories.category_id =     threads.thread_category_id
GROUP BY categories.category_name, categories.category_id
ORDER BY max(threads.thread_datetime) DESC
于 2013-03-18T11:03:23.967 に答える
1

何かのようなもの、

SELECT
                categories.category_name, 
                categories.category_id, 
                COUNT(threads.thread_category_id) AS 'threadCount'
    FROM 
                categories
        LEFT OUTER JOIN 
                threads 
                    ON categories.category_id = threads.thread_category_id
    GROUP BY 
                categories.category_name,
                categories.category_id
    ORDER BY 
                max(threads.thread_datetime) DESC
于 2013-03-18T11:04:32.193 に答える