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