私はフォーラムを構築していますが、いくつかの問題が発生しました。
基本的なデータベース構造は次のようになります。
users
| user_id | username
categories
| category_id | category_name |
forum_posts
| post_id | ref_post_id (FK) | ref_category_id (FK) | ref_user_id (FK) | post_date |
ref_post_idが0の場合、それはタイトルを持つスレッドのメイン投稿であることを意味します。スレッドへの回答の場合、ref_post_idはメイン投稿のpost_idと同じです。ご理解頂けるとありがたいです。
各カテゴリの最新の投稿を取得するにはどうすればよいですか?投稿スレッドのタイトルと、ユーザーテーブルのユーザー名を含みます。テーブル構造を変更して、「latest_post_id」フィールドをcategoriesテーブルなどに追加する必要がありますか?
あなたの助けにとても素晴らしい。同様の質問があることは知っていますが、latest_post_idとそのすべてをcategoriesテーブルに保存する必要があるのか、それともページの読み込みごとにすべてを取得するための巨大なクエリを使用するのかについても疑問に思っています。
編集2:これが私の現在の質問です:
SELECT category_id, name,
(SELECT COUNT(*) FROM forum_posts WHERE ref_category_id = category_id AND ref_post_id = 0) count_threads
(
SELECT title, ref_user_id, username FROM forum_posts
LEFT JOIN users ON user_id = ref_user_id
WHERE latest_post_id = (SELECT MAX(latest_post_id) FROM forum_posts WHERE ref_category_id = category_id LIMIT 1)
)
FROM forum_categories