你将如何编写一个MySQL查询来限制连接表的结果(或者如果这样做效果更好,则选择子选择)并计算连接表或表中的项数?例如,假设您有三个表格:项目,任务和评论,其中项目有0个或更多任务,任务有0个或更多注释。您如何将每个项目返回的任务数量限制为3,并返回每个项目的任务总数和每个任务的评论数?如何编写一个MySQL查询来限制一个或多个连接表的结果,并计算连接表或多个表中的项的数量?
这就是我想象中的结果集的样子:
project_id, project_title, task_id, task_title, num_tasks, num_comments
------------------------------------------------------------------------
1, Project1, 1, Task1, 4, 3
1, Project1, 2, Task2, 4, 0
1, Project1, 3, Task3, 4, 9
2, Project2, 10, Task10, 20, 0
2, Project2, 11, Task11, 20, 0
2, Project2, 12, Task12, 20, 2
3, Project3, 20, Task20, 17, 5
3, Project3, 21, Task21, 17, 1
3, Project3, 22, Task22, 17, 2
其中“PROJECT1”,“Project2的”等只是代表一个项目的标题和“任务1”,“任务2”等代表任务的标题。
最后,(通过查询的结果分析后)我想能够显示这样的事情:
Project1 (4 tasks)
Task1 (3 comments)
Task2 (0 comments)
Task3 (9 comments)
Project2 (20 tasks)
Task10 (0 comments)
Task11 (0 comments)
Task12 (2 comments)
Project3 (17 tasks)
Task20 (5 comments)
Task21 (1 comments)
Task22 (2 comments)
我猜这必须与子选择做(这是好的),但我似乎无法弄清楚如何使用连接完成此操作,并且我没有足够的处理子选择来执行此类操作。
*您如何限制每个项目返回的任务数3 *:你准备好哪三个?例如,当你'ORDER BY task_id ASC'或'ORDER BY num_comments DESC'时,前三名? – BalusC 2010-01-29 00:46:57