【问题标题】:How to show the numbers of answers posted into my forum?如何显示发布到我的论坛的答案数量?
【发布时间】:2015-03-06 19:22:31
【问题描述】:

我正在使用 Java 技术创建一个论坛。实际上它几乎接近完成,但问题是我想在我的论坛中显示答案的数量。好的,让我们深入了解。

首先,我创建了一个名为index.jsp 的文件,我们可以在其中查看所有问题。对于e.g,请查看stackoverflow.com,我们会在一个问题中看到所有问题以及numbers of answers posted。这就是我想在 index.jsp 中显示的全部内容。

我正在使用select * from question_table.. 获取所有问题。实际上进入我的view question 文件。我正在使用创建到answer's table 中的question_id 表来获取答案。您非常清楚要显示答案,特别是我们需要将相同的question_id 保存到答案表和问题表中。

对于e.g:

看看这张桌子,我设计了同样的东西:

create table if not exists thread_question(
question_id INT NOT NULL auto_increment,
question_title VARCHAR(500) NOT NULL,
question VARCHAR(100000) NOT NULL,
question_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(question_id)
);

create table if not exists thread_answer(
answer_id INT NOT NULL auto_increment,
question_id INT NOT NULL references thread_question(question_id),
answer VARCHAR(100000) NOT NULL,
answer_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(answer_id)
); 

正如您在此处看到的,question_id 保存在两个表中。我在这里使用的过程相同。

现在我想在主页中显示我的答案数量。任何想法?这里可以使用什么。我真的卡在这里了。请帮忙!

当然,我们将不胜感激!

已编辑:

这是我的完整表格代码:

create table if not exists thread_question(
question_id INT NOT NULL auto_increment,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
question_title VARCHAR(500) NOT NULL,
question VARCHAR(100000) NOT NULL,
question_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(question_id)
);

create table if not exists thread_answer(
answer_id INT NOT NULL auto_increment,
question_id INT NOT NULL references thread_question(question_id),
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
answer VARCHAR(100000) NOT NULL,
answer_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(answer_id)
);

这里是SCREENSHOT

请帮忙!!

【问题讨论】:

  • 你不能从 thread_answer ta, thread_question tq where ta.question_id = tq.question_id 中选择 count(*) 吗?
  • tatq 是什么?你能解释一下吗?
  • 它们是表的别名。您可以在查询中为您的表创建缩短名称,以使其更容易。

标签: java mysql sql jsp servlets


【解决方案1】:

使用内部连接来获取每个问题的答案数

   SELECT thread_question.question_id, COALESCE(sub.counts,0) AS NumerOfAnswer 
   FROM thread_question LEFT JOIN (
        SELECT question_id, COUNT(answer_id) AS counts
        FROM thread_answer
        GROUP BY question_id
    ) sub ON thread_question.question_id = sub.question_id
  ORDER BY NumerOfAnswer

【讨论】:

  • 嘿.. 成功了!!! :) 谢谢.. 非常感谢.. 你能告诉我吗?你怎么知道这些查询???我是一名学生.. 我是 Java 方面最好的,但不是 MySql 请告诉我.. 你是怎么知道所有这些的???
  • 还有一件事..我想知道...您的 sql 工作正常..但这些值显示line wise 但我想使用desc 显示它.. 是否可行?
  • 使用 Order by Clause,所以在查询中添加这个在最后一个 order by NumerOfAnswer desc。查看修改后的答案
  • 我做到了...删除desc
  • 来自order by 行.. 谢谢你..你是SQL 的天才.. 我必须承认 :)
【解决方案2】:

整个论坛所有回答的个数?

SELECT COUNT(answer_id)
FROM thread_answer

在获取显示问题的查询中显示答案的数量?

SELECT <...your selected columns...>, COALESCE(a.counts, 0) AS counts
FROM thread_question q
    LEFT JOIN (
        SELECT question_id, COUNT(answer_id) AS counts
        FROM thread_answers
        GROUP BY question_id
    ) a ON q.question_id = a.question_id

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多