2016-07-27 9 views
3

Ich entwickle gerade eine Webanwendung mit Java, JS und JDBC. Ich habe einige Tabellen mit Transaktionsdetails in meiner DB, die ich verwenden möchte, um in einem HighChart in meiner JSP anzuzeigen. Ich bin in der Lage ein ResultSet der folgenden Tabelle zu erhalten:Erstellen einer dynamischen Anzahl von Arrays zur Anzeige in Highchart

enter image description here

Nun, was ich will, ist, die Daten in einer Reihe von ArrayList s auf das Jahr und Kategorie basiert aufzuspalten, die ich meine HighChart passieren kann - jeder ArrayList sollte ein Objekt, das Jahr, die Kategorie und eine Reihe von monatlichen Verkäufe enthalten und wie diese für jedes Jahr und Kategorie

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] 

wo das Array die monatlichen Verkäufe darstellt (0 würde bedeuten, aussehen sollte es keine Verkäufe oder keine Daten von DB für diesen Monat).

Ich habe versucht, dies mit Iteratoren und for-Schleifen jetzt für eine ganze Weile richtig zu machen, aber ich kann es nicht funktionieren. Ich bin nicht auf der Suche nach Code, nur ein paar Ideen und Anleitungen, wie ich das bestmöglich angehen kann, weil ich ein bisschen feststecke.

+0

Ihre Datenbanktabelle/Design ist ein Durcheinander. Ist es möglich, das zu ändern? – ControlAltDel

+0

Ja, irgendwelche Vorschläge wie? Es ist nur eine Ergebnistabelle von einer Abfrage, die ich mache. –

Antwort

0

Aktualisiert Antwort:

Wenn Kategorie dynamisch ist, ist hier, was Sie tun können:

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) 
) 

Füllen Sie dann Tabelle Ihre MONATE mit all den Monaten Sie

Dann müssen Sie etwas tun können, wie

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

Ich überlasse es Ihnen, den tatsächlichen Namen der Kategorie zu erhalten Diese Abfrage

+0

Das Problem damit ist, dass die Kategorien auch dynamisch sind, ich benutze sie nur als Beispiel. Ich möchte eine separate ArrayList für jede Kategorie haben, die der Benutzer möglicherweise erstellt hat. –

+0

Danke, ich werde es versuchen. –