Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何从表中获取结果,以及一个查询中有多少个连接项?_Mysql_Sql - Fatal编程技术网

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的行。有没有办法解决这个问题?谢谢