Web プロジェクトのカスタム フォーラムに取り組んでいます。ID を持つカテゴリ、ID とカテゴリを持つトピック、ID とトピックとユーザー ID を持つ投稿があります。私がやろうとしているのは、そのカテゴリの最新の投稿の投稿テーブルのデータ、その投稿に関連付けられているユーザーのデータ、およびトピックのデータとともに、カテゴリ テーブルのデータを含むカテゴリのリストを表示することです。その最新の投稿に関連付けられています。
私はクエリを理解しようとして頭を悩ませてきましたが、複雑な mysql クエリを十分に理解していないため、ここで使用するパターンや手法を知ることができません。これが私がこれまでに持っているものです:
SELECT u1.*, fp1.*, ft1.*, fc1.* from forum_posts AS fp1
LEFT JOIN users AS u1 ON u1.id = fp1.post_by
LEFT JOIN forum_topics AS ft1 on ft1.id = fp1.post_topic
LEFT JOIN forum_categories AS fc1 on fc1.id = ft1.topic_cat
GROUP BY fc1.id
ORDER BY fp1.id ASC;
しかし、これは私が探している結果を返しません。問題は、各カテゴリの最新の投稿とその投稿の関連トピックを取得しようとすることです。
各テーブルの DB 構造は次のとおりです。
フォーラム_カテゴリ
+-----------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| cat_name | varchar(255) | NO | UNI | NULL | |
| cat_description | varchar(500) | NO | | NULL | |
| cat_views | bigint(20) unsigned | YES | | 0 | |
| status | tinyint(1) | NO | | 1 | |
+-----------------+---------------------+------+-----+---------+----------------+
フォーラム_トピック
+---------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| topic_subject | varchar(255) | NO | | NULL | |
| topic_date | datetime | NO | | NULL | |
| topic_cat | bigint(20) unsigned | NO | MUL | NULL | |
| topic_by | bigint(20) unsigned | NO | MUL | NULL | |
| topic_views | bigint(20) unsigned | YES | | 0 | |
+---------------+---------------------+------+-----+---------+----------------+
フォーラム投稿
+--------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_content | text | NO | | NULL | |
| post_date | datetime | NO | | NULL | |
| post_topic | bigint(20) unsigned | NO | MUL | NULL | |
| post_by | bigint(20) unsigned | NO | MUL | NULL | |
+--------------+---------------------+------+-----+---------+----------------+
ユーザー
+-----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| user_type | varchar(50) | YES | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| username | varchar(255) | YES | UNI | NULL | |
| password | char(60) | NO | | NULL | |
| image | text | YES | | NULL | |
| status | tinyint(1) | NO | | 1 | |
+-----------+---------------------+------+-----+---------+----------------+
これが私が達成しようとしている出力のイメージです。"Categories" には、forum_categories テーブルのデータが表示され、"Recent" の下には、最新の投稿のユーザー、投稿、およびトピックのデータが表示されます。
私を助けてください。ありがとうございました。