Reputation: 17185
I have a query like this:
select display_order , section_name , solution_section_id from solution_sections order by display_order
It is very basic and gets the sections of a particular discussion. It works.
What I want to do is to also display the number of comments in each of the section. So I want to do a join on the comments table and do a count on how many comments there are.
Here is the schema for the other tables:
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 | |
+---------------------+---------------+------+-----+---------+----------------+
So it would have to be a join on solution_section_id and solution_part (those are the foreign keys even though they are named somewhat inconsistently) where problem_id = some id.
But how would I get the count of the number of returned comments in the suggested_solution_comments table?
Thanks!
Upvotes: 0
Views: 74
Reputation: 9170
UPDATED with outer join:
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
Upvotes: 1
Reputation: 2192
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
Maybe try something like this? Its been awhile since i touched table joins, and your table naming looks pretty confusing to me.
Upvotes: 1