MySQL-如何从表中获取结果,以及一个查询中有多少个连接项?
我有这样一个问题:MySQL-如何从表中获取结果,以及一个查询中有多少个连接项?,mysql,sql,Mysql,Sql,我有这样一个问题: select display_order , section_name , solution_section_id from solution_sections order by display_order 这是一个非常基本的问题,它包含了特定讨论的各个部分。它起作用了 我想做的是显示每个部分中的注释数。所以我想在comments表上进行连接,并计算有多少条注释 以下是其他表的架构: mysql> describe suggested_solution_comment
select display_order , section_name , solution_section_id from solution_sections order by display_order
这是一个非常基本的问题,它包含了特定讨论的各个部分。它起作用了
我想做的是显示每个部分中的注释数。所以我想在comments表上进行连接,并计算有多少条注释
以下是其他表的架构:
mysql> describe suggested_solution_comments;
+-----------------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+----------------+------+-----+---------+----------------+
| comment_id | int(10) | NO | PRI | NULL | auto_increment |
| problem_id | int(10) | NO | | NULL | |
| suggested_solution_id | int(10) | NO | | NULL | |
| commenter_id | int(10) | NO | | NULL | |
| comment | varchar(10000) | YES | | NULL | |
| solution_part | int(3) | NO | | NULL | |
| date | date | NO | | NULL | |
| guid | varchar(50) | YES | UNI | NULL | |
+-----------------------+----------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
mysql> describe solution_sections;
+---------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+----------------+
| solution_section_id | int(10) | NO | PRI | NULL | auto_increment |
| display_order | int(10) | NO | | NULL | |
| section_name | varchar(1000) | YES | | NULL | |
+---------------------+---------------+------+-----+---------+----------------+
因此,它必须是解决方案部分和解决方案部分的连接(这些是外键,尽管它们的命名有些不一致),其中问题部分=一些id
但是,如何获得建议的\u解决方案\u注释表中返回的注释数
谢谢
SELECT solution_sections.display_order, solution_sections.section_name, solution_sections.solution_section_id, COUNT(suggested_solution_comments.comment_id) FROM solution_sections, suggested_solution_comments GROUP BY solution_sections.solution_section_id
也许试试这样的?我已经有一段时间没有接触表联接了,您的表命名对我来说非常混乱。使用外部联接更新:
select s.display_order, s.section_name, s.solution_section_id
,count(c.comment_id) AS comment_count
from solution_sections s
left outer join suggested_solution_comments c ON (c.solution_part = s.solution_section_id)
group by s.display_order, s.section_name, s.solution_section_id
order by display_order
那不太管用。它为所有部分提供相同的计数。:)我想你还得加一个where子句。其中solution\u sections.solution\u section\u id=建议的\u解决方案\u注释。solution part是更接近的,但它只返回超过0条记录的节,而不返回有0条注释的项。如果没有注释,则表中不会有任何建议的\u解决方案\u id。这就是为什么它不返回任何没有注释的记录。就像下面提到的Glenn一样,在这种情况下,您可能希望使用外部联接。谢谢你们两位:)非常感谢:)这几乎奏效了,只是它不返回计数为0的行。有没有办法解决这个问题?谢谢