我正在从数据库中检索一个数据表,它看起来像:
[1] :https://i.stack.imgur.com/JzI2j.jpg
正如您所看到的,我有相同的EmpName、EmpID、Designation重复。这是因为同一个人分配了那么多任务为了使其看起来更加美观,我希望EmpID、Name、Designation只打印一次,而特定员工的其余行则与数据库中的打印次数一样多。
我的DataTable看起来像:
<h:dataTable value="#{employeeWiseReportBean.empWiseList}" var="u" rendered='true'
styleClass="infoTable" headerClass="dataTableHeader" rowClasses="dataTableRow">
<h:column>
<f:facet name="header">
Employee ID
</f:facet>
#{u.empID}
</h:column>
<h:column>
<f:facet name="header">
First Name
</f:facet>
#{u.fullName}
</h:column>
<h:column>
<f:facet name="header">
Designation
</f:facet>
#{u.designation}
</h:column>
<h:column>
<f:facet name="header">
Task ID
</f:facet>
#{u.subTaskID}
</h:column>
<h:column>
<f:facet name="header">
Task Description
</f:facet>
#{u.taskDescription}
</h:column>
<h:column>
<f:facet name="header">
From
</f:facet>
#{u.fromDate}
</h:column>
<h:column>
<f:facet name="header">
TO
</f:facet>
#{u.toDate}
</h:column>
</h:dataTable>
我知道为什么它要打印这么多实例,但我不明白如何让它只打印一个实例。
我使用的查询和结果集如下:
public List<EmployeeDutySchedule> getEmpWiseDB()
{
List<EmployeeDutySchedule> empDutyList=new ArrayList<EmployeeDutySchedule>();
ResultSet rs=null;
String query="Select employee_duty_schedule.emp_id, first_name, last_name, emp_designation, task_allocated_id, description, from_date, to_daten" +
" FROM transport_department_schema.employees_information, transport_department_schema.employee_duty_schedule, transport_department_schema.m_subtasksn" +
" Where employees_information.emp_id=employee_duty_schedule.emp_id AND employee_duty_schedule.task_allocated_id=m_subtasks.subtask_id ;n" +
"n" +
"";
System.out.println(query);
rs=MyQueryExe.executeQuery(query);
System.out.println("rs "+rs);
try
{
while(rs.next())
{
EmployeeDutySchedule empDuty=new EmployeeDutySchedule();
empDuty.setEmpID(rs.getString("emp_id"));
empDuty.setFullName(rs.getString("first_name")+" "+rs.getString("last_name"));
empDuty.setSubTaskID(rs.getString("task_allocated_id"));
empDuty.setTaskDescription(rs.getString("description"));
empDuty.setDesignation(rs.getString("emp_designation"));
empDuty.setFromDate(rs.getDate("from_date"));
empDuty.setToDate(rs.getDate("to_date"));
empDutyList.add(empDuty);
System.out.println("size of list "+empDutyList.size());
}
}
catch(SQLException e)
{
e.getStackTrace();
}
return empDutyList;
}
数据库表本身有多个empID条目,用于显示分配给特定员工的所有任务。
任何帮助都将不胜感激!我希望我的问题足够清楚。谢谢
您的意思是,标题字符串"Employee Id"等是重复的,还是与每个Employees相关的行数?
在后一种情况下,请尝试在查询中添加Distinct关键字:
Select distinct employee_duty_schedule.emp_id, ................