SQLクエリは、dbのテーブルからすべての投稿を取得しますが、特定のユーザーから最大5つのエントリを取得しますか?

ビョルン:

私はphp-blogシステムを構築していて、スタートページに各ユーザーから最大5つを除くすべての投稿を表示したいと考えています。データベースのクエリでこれを行うことを考えていますが、それを行う方法がわかりません。count()関数は便利だと思いますが、誰かが私を助けることができます

これは今日の私の機能です。各ユーザーから最大5つの投稿を取得できるように改善したいだけです。

protected function getAllPostsDB() {
    $sql = "SELECT recipes.Recipe_ID, recipes.Title, recipes.Short_description, recipes.Step_by_step, 
    recipes.create_date, recipes.last_mod_date, recipes.Portions, recipes.imgPath, users.Username
    FROM recipes 
    JOIN users
        ON recipes.User_ID = users.User_ID
    ORDER BY recipes.create_date DESC";
    $stmt = $this->connect()->query($sql);
    /* fetch all is already set to associative array*/
    $result = $stmt->fetchAll();
    return $result;`
GMB:

MySQL 8.0を実行している場合は、ウィンドウ関数を使用するだけです。

SELECT r.Recipe_ID, r.Title, r.Short_description, r.Step_by_step, 
    r.create_date, r.last_mod_date, r.Portions, r.imgPath, u.Username
FROM (
    SELECT r.*, ROW_NUMBER() OVER(PARTITION BY User_ID ORDER BY create_date DESC) rn
    FROM recipes r
) r
INNER JOIN users ON r.User_ID = u.User_ID
WHERE r.rn <= 5
ORDER BY r.create_date DESC

これにより、columnで指定されているように、ユーザーごとに最後の5つのレシピが表示されますcreate_date別の並べ替え規則が必要な場合は、のORDER BY句をROW_NUMBER()他の列または列のセットに変更できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ