MYSQL统计同一表格中问题n的答案数

MYSQL统计同一表格中问题n的答案数,mysql,select,count,group-by,Mysql,Select,Count,Group By,我有一个包含问题和答案的表格,问题本身有一个主题字段,答案的主题字段为空。有一个描述字段用作问题和该问题答案中的文本。 每一行都有一个字段,用于确定它是一个问题还是一个答案,如果0表示它是一个问题,如果我们假设1表示它是一个答案,则为parent_id字段 例如: id | subject | description | parent_id 1 How old are you? Tell us your age. 0 2

我有一个包含问题和答案的表格,问题本身有一个主题字段,答案的主题字段为空。有一个描述字段用作问题和该问题答案中的文本。
每一行都有一个字段,用于确定它是一个问题还是一个答案,如果0表示它是一个问题,如果我们假设1表示它是一个答案,则为parent_id字段

例如:

id | subject              | description          | parent_id
1    How old are you?       Tell us your age.      0
2    (NULL)                 40                     1
3    (NULL)                 30                     1
4    Where are you born?    Tell us the place you  
                            are from.
5    (NULL)                 USA                    4
以此类推,我所要做的就是得到每个问题的所有答案。我的结果集是这样的

 subject              |       replies
 How old are you?             2
 Where are you born           1
我试过了,但不起作用,任何帮助都将不胜感激

 SELECT q.subject, COUNT(q.parent_id) as replies FROM question q WHERE q.parent_id = 0 GROUP BY q.subject

似乎如果两个问题是相同的,那么我会将它们分组在一起,并在每个问题都有单独的不同id时增加“回复”列的值

您必须查询同一个表两次。一次作为问题,另一次作为答案:

select q.id, q.subject, count(1) as replies 
from questions q, questions a 
where q.subject is not null and a.parent_id = q.id 
group by 1.id, 1.subject

但正确的做法是将问题和答案放在单独的表格中。

首先,删除分组,因为这只会为每个家长id返回一个响应。

如前一个答复中所述,最佳做法是有两个表格-问题和答案

如果你决定走这条路

表1-id(pk)、问题、说明

表2-id(pk)、答案、问题id(fk)


是的,这很好,如果我想将连接添加到另一个表中呢。问题表有一个名为“律师事务所id”的字段,希望将其与律师事务所表联接。我需要律师事务所表上的一个人的姓名,以将其添加为结果集字段名是类似于l.name的名称。就像每个问题都要问律师一样,结果集也应该有被问问题的律师。不行,这不是我的数据库确定的事情。我只是想我会建议以防万一。但不管怎样,你从Nosyara那里得到了一个很好的答案。祝你好运
 SELECT DISTINCT questions.subject, COUNT(answers.question_id) AS replies
 FROM questions, answers
 WHERE answers.question_id = questions.id
 GROUP BY questions.subject
 ORDER BY replies DESC