Java 构建要在Highchart中显示的动态阵列数

Java 构建要在Highchart中显示的动态阵列数,java,arrays,database-design,highcharts,Java,Arrays,Database Design,Highcharts,我目前正在使用Java、JS和JDBC开发一个web应用程序。我的数据库中有一些带有事务细节的表,我想用它们在JSP的HighChart中显示。我可以得到下表的结果集: 现在,我想根据我可以传递到HighChart的年份和类别,将数据拆分为若干ArrayLists,每个ArrayList都应该有一个包含年份、类别和月度销售额数组的对象,看起来应该是这样的 2015 , COLOUR , [1,0,0,6,0,0,0,0,0,0,0,0] 2015 , DESIGN , [2,4,6,0,0,

我目前正在使用Java、JS和JDBC开发一个web应用程序。我的数据库中有一些带有事务细节的表,我想用它们在JSP的HighChart中显示。我可以得到下表的结果集:

现在,我想根据我可以传递到HighChart的年份和类别,将数据拆分为若干
ArrayList
s,每个
ArrayList
都应该有一个包含年份、类别和月度销售额数组的对象,看起来应该是这样的

2015 , COLOUR , [1,0,0,6,0,0,0,0,0,0,0,0]

2015 , DESIGN , [2,4,6,0,0,0,0,0,0,0,0,0]

2016 , DESIGN , [0,0,0,5,5,4,7,0,0,0,0,0]

2016 , COLOUR , [0,0,0,5,5,3,6,0,0,0,0,0]
其中,数组表示每年和类别的月销售额(0表示该月没有销售额或DB没有数据)

很长一段时间以来,我一直在尝试使用迭代器和for循环来实现这一点,但我无法让它正常工作。我不是在寻找代码,只是一些关于如何以最好的方式实现这一点的想法和指导,因为我有点卡住了

最新答案:

如果类别是动态的,您可以执行以下操作:

create table CATEGORY (
  ID int NOT NULL AUTO_INCREMENT,
  NAME varchar(16) NOT NULL,
  PRIMARY KEY(ID)
)

create table MONTHS (
  MONTH int NOT NULL AUTO_INCREMENT,
  PRIMARY KEY(MONTH)
)

create table CATEGORY_SUM (
  ID int NOT NULL AUTO_INCREMENT,
  CATEGORY int NOT NULL,
  MONTH int NOT NULL,
  PRIMARY KEY(ID),
  FOREIGN KEY(CATEGORY) references CATEGORY(ID),
  FOREIGN KEY(MONTH) references MONTHS(ID)
)
然后把你需要的所有月份填入你的月份表

然后你可以做类似的事情

SELECT * from CATEGORY_SUM 
RIGHT OUTER JOIN MONTHS ON CATEGORY_SUM.MONTH = MONTHS.MONTH 
order by CATEGORY_SUM.CATEGORY, CATEGORY_SUM.MONTH

我让您将类别的实际名称输入到这个查询中

您的数据库表/设计一团糟。有可能改变吗?是的,有什么建议吗?这只是我正在进行的一个查询的结果表,问题是这些类别也是动态的,我只是以它们为例。我想为用户可能创建的每个类别创建一个单独的ArrayList。谢谢,我将尝试这个。