1

次のSQLクエリがあります。

SELECT p.`id`, p.`data`, p.`title`, p.`creation_date`, t.`name` AS 'tag'

    FROM `post_tag` pt, `post` p, `tag` t 

    WHERE p.`id` = pt.`post` 
        AND pt.`tag` = t.`id` 
        AND p.`author` <> '1'
        AND (t.`name` = 'Programming' 
            OR t.`name` = 'Photography' 
            OR t.`name` = '[...]') 

    ORDER BY p.`creation_date`, t.`name` DESC

結果のテーブルは次のようになります。

SQL結果

スクリーンショットで強調したように、ID 76 と 77 の行が繰り返されています。私のアプリケーションの場合、それは「人気」の尺度です。私はできるようにしたい:

  1. 「データ」が繰り返される行を 1 つの行にグループ化します (GROUP BY でこれを実行できることはわかっています)。
  2. 最初に「popularity」で行を並べ替え、次に「creation_date」で並べ替えます。したがって、同じ「データ」を持つ行が 3 つある場合、最初にそれが返され、次にカウントが 2 の行が続きます。
4

1 に答える 1