【问题标题】:Fetching unique Value and no. of times of the Value获取唯一值和编号。价值的倍数
【发布时间】:2025-12-21 12:55:10
【问题描述】:

在(使用 mysql)表中,我的一列(即颜色)类似于:

|Color|
======
|Red  |
|Blue |
|Green|
|Red  |
|Green|
|Green|
|Red  |
|Red  |

在我当前的 jsp 页面中建立 jdbc 连接后:我正在尝试在饼图中显示值(它在 jscript 中写入,我将从 mysql 中放入值),例如:

|Color|no. of Times|
====================
|Red  |   4        |
|Blue |   1        |
|Green|   3        |

购买我无法将值放入图表中(我猜代码有问题):

<%
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/apps","root","root");
Statement stmt = con.createStatement();
String sql2="select distinct(color) as COLOR from user_management order by device;";
ResultSet rs2 = stmt.executeQuery(sql2);
String s = rs2.getString("color");
while(rs2.next()){
    String device = rs2.getString("color");
    List<String> list=new ArrayList<String>();
    list.add(device);
    }
// I guess here will be some code for device value in String, say "s" 

String sql1 = "select count(case when color='"+s+"' then 1 end) as COLOR from user_management";
ResultSet rs1 = stmt.executeQuery(sql1);
System.out.println(sql1);
%>

然后将结果集放入饼状表中

<table id="chartData">
  <% while(rs2.next()){ %>
  <% while(rs1.next()){ %>
    <tr>
      <th>DEVICE</th><th>NUMBER</th>
     </tr>

    <tr style="color: #0DA068">
      <td><%= rs2.getString("device")%></td><td><%= rs1.getString(1)%></td>
    </tr>

   <% }     
   %>
   <% }     
   %>
 </table>

如何获取图表中颜色名称和否的列值的任何输入。颜色的变化同时发生。

【问题讨论】:

  • 请学会分离关注点。这根本不是 Java/JSP/Servlet 问题。这只是一个简单的 JDBC/SQL 问题。在使用 main() 方法而不是直接在 JSP 文件中的普通 Java 应用程序类中独立执行/测试 JDBC/SQL 代码时,您会遇到完全相同的问题。
  • 感谢您的评论,我能让您了解问题吗?是否可以通过这种方式实现......或者我哪里出错了......任何输入

标签: jsp servlets jdbc


【解决方案1】:

使用GROUP BY:

SELECT Color, count(*) AS times FROM colors GROUP BY Color;

【讨论】:

  • 在这个jsp页面中,我调用了一个javascript,我必须在其中放置每个属性的结果集对象,这将显示一个饼图。在代码中我猜会有一个变化,我猜(不需要sql )
  • 我在您的问题中没有看到任何 Javascript。我的回答解决了“如何在颜色名称和颜色数量同时发生的图表中获取列值”的问题。
  • 我还没有发布那部分,即使那是询问如果我想以这种方式实现,那么如何......我猜我认为可以做到的方式,......这就是我尝试这种方式的原因,任何输入4m你身边..