次の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
結果のテーブルは次のようになります。
スクリーンショットで強調したように、ID 76 と 77 の行が繰り返されています。私のアプリケーションの場合、それは「人気」の尺度です。私はできるようにしたい:
- 「データ」が繰り返される行を 1 つの行にグループ化します (GROUP BY でこれを実行できることはわかっています)。
- 最初に「popularity」で行を並べ替え、次に「creation_date」で並べ替えます。したがって、同じ「データ」を持つ行が 3 つある場合、最初にそれが返され、次にカウントが 2 の行が続きます。