2013-05-23 1 views
1

В моем проекте я хочу показать в круговой диаграмме, сколько учреждений каждый сотрудник зарегистрирован в системе. Таблица учреждений содержит внешний ключ с идентификатором сотрудника, который зарегистрировал учреждение, поэтому в каждом учреждении есть связанный с ним сотрудник.Как создать круговую диаграмму, отображающую количество чего-либо зарегистрированного каждым человеком?

я построил следующий код, но не может идти дальше:

//etc 

    String query = "SELECT i.ins_id, f.fun_nome FROM instituicao i " + 
       "JOIN funcionario f " + 
       "ON(f.fun_id = i.ins_fun_id)"; 

     PreparedStatement stmt = ConexaoDAO.con.prepareStatement(query, 
       ResultSet.TYPE_SCROLL_INSENSITIVE, 
       ResultSet.CONCUR_READ_ONLY); 

    ResultSet rs = stmt.executeQuery(); 

    while(rs.next()) { 
     total = rs.getInt(1); 
    } 

    DefaultPieDataset pieDataset = new DefaultPieDataset(); 

    for(VFuncionarioVO vo : lista) { 
     //pieDataset.setValue(vo.getNome(),); 
    } 

//etc 

Я попытался с помощью GROUP BY в запросе, но это не решило проблему.

EDIT: на самом деле, используя инструкцию GROUP BY, необходимо выполнить эту работу. Прочтите принятый ответ и его комментарии.

ответ

2

Вам не нужен PreparedStatement. Используйте конструктор org.jfree.data.jdbc.JDBCPieDataset, который принимает запрос «, который возвращает данные в двух столбцах, первый содержит данные VARCHAR, а второй содержит числовые данные». Вы можете использовать набор данных в своем ChartFactory.

JDBCPieDataset ds = new JDBCPieDataset(conn, "SELECT ..."); 
+0

Спасибо! Я попытаюсь использовать его и опубликовать результат позже. – rsb2097

+0

Большое спасибо! Теперь он работает, но мне пришлось немного изменить свой SQL-запрос, поскольку метод setValue из JDBCPieDataset сначала принимает строку String, а затем числовое значение, поэтому: Строковый запрос = «SELECT f.fun_nome, COUNT (i.ins_id) FROM instituicao i JOIN funcionario f ON (f.fun_id = i.ins_fun_id) GROUP BY f.fun_nome "; – rsb2097

+1

Кроме того, перед этим.add (новый ChartPanel (диаграмма)) я должен был отобразить необработанные значения в диаграмме (а не процент, показанный всплывающей подсказкой): диаграмма PiePlot plot = (PiePlot) .getPlot(); Генератор PieSectionLabelGenerator = новый StandardPieSectionLabelGenerator («{0} = {1}», новый DecimalFormat («0»), новый DecimalFormat («0»)); plot.setLabelGenerator (генератор); – rsb2097

Смежные вопросы