【发布时间】:2014-01-23 19:44:42
【问题描述】:
我在数据库中有以下表格:
表post:
+---------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------+------+-----+---------+----------------+
| post_id | int(11) | NO | PRI | NULL | auto_increment |
| post_content | varchar(50000) | NO | | NULL | |
| post_date | datetime | NO | | NULL | |
| post_summary | varchar(1000) | YES | | NULL | |
| post_title | varchar(300) | NO | | NULL | |
| post_visitors | int(11) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| category_id | int(11) | NO | MUL | NULL | |
+---------------+----------------+------+-----+---------+----------------+
表user:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| user_image | varchar(500) | YES | | NULL | |
| user_name | varchar(45) | NO | | NULL | |
| user_password | varchar(45) | NO | | NULL | |
| user_type | varchar(30) | NO | | NULL | |
| user_username | varchar(45) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
表comment:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| comment_id | int(11) | NO | PRI | NULL | auto_increment |
| comment_content | varchar(600) | NO | | NULL | |
| comment_date | datetime | NO | | NULL | |
| comment_title | varchar(300) | NO | | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| post_id | int(11) | NO | MUL | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
我需要一个返回 post_title、post_summary、post_date、number_of_comments_for_this_post、user_name 的查询,按 number_of_comments_for_this_post 排序(降序)。
基本上我需要来自所有三个表的数据。我知道如何离开两个表并获取一些数据。例如:
SELECT p.post_title, p.post_summary, p.post_date, u.user_name
FROM post p LEFT JOIN user u ON p.user_id=u.user_id;
如何通过加入第三个表(评论)来扩展此查询并添加一个字段 - 'number of posts cmets' 按评论最多的帖子排序(desc)?
【问题讨论】: