MySQL をデータベースとして使用して PHP でプログラミングを始めたことがあります。基本的な SQL クエリから、最大 2 つのテーブルを含む単純な JOINS までを知っています。
しかし、3 つ以上のテーブルから結果を取得する必要がある瞬間に行き詰まります。どんなに頑張っても、どうにか道に迷ってしまいます。複雑な SQL クエリに取り組む方法に関する優れたチュートリアルを探してあらゆる場所を検索しましたが、その方法を説明するものは見つかりませんでした。ほとんどのチュートリアルは特定の問題の解決策で構成されていますが、問題に取り組むための完全な一般的な手順については説明していません。
複雑なクエリに関して、最初から最後までの基本的な一般的な方法、クエリの作成方法などを誰でも説明できますか。
例えば:
次のデータベース構造を持つフォーラムがあります。
フォーラムカテゴリー:
id | name | desc
フォーラムトピック:
id | category_id | created_on | created_by | title | content
フォーラムポスト:
id | topic_id | created_on | created_by
ユーザー:
id | first_name | last_name
すべてのトピックがforumTopic
テーブルに作成されます。そのトピックへのすべての返信がforumPost
テーブルに挿入されます。
ここで、フォーラムのメイン ページに、カテゴリ、特定のカテゴリのユーザーが最後に投稿した投稿、最後の投稿を投稿したユーザーを表示する必要があります。
私が考えた流れは:
topic_id でグループ化された forumPost テーブルの MAX(id) を調べて、カテゴリの最後の投稿を見つけます。これにより、すべてのトピックの最後の投稿の ID が取得されます。
ここで、category_id でグループ化された (以前に取得した IDS の) MAX を再度見つけます。これにより、すべてのカテゴリの最後の投稿が取得されます。
ID は自動インクリメントの主キーです。
しかし、上記のアルゴリズムからSQLクエリを作成することに行き詰まりました
誰かがこれについて私を助けることができれば非常に役に立ちます.