Tengo 2 tablas proyecto y fases las cuales tan relacionadas de 1 a muchos respectivamente ...
Código HTML:
<% Vector regs=Sql.consulta("SELECT Id_Proyecto,Nombre_Proyecto,Nombre_Fase from T_Proyecto inner join M_Fase on T_Poryecto.Id_Proyecto=M_Fase.Id_Proyecto); if(regs==null) { out.println("<h3>No hay acceso a la base de datos</h3>"); } else { out.println("<h3>Listado de Proyectos</h3>"); out.println("<table border=2 width='100%' cellspacing=1>"); out.println("<th>Código</th>"); out.println("<th>Nombre </th>"); for(int fils=0; fils<regs.size(); ++fils) { String[] unaFila= (String[]) regs.get(fils); for(int cols=0; cols<unaFila.length; ++cols) { if(fils==0) { // los títulos //out.println("<td><font color=red><b>" + unaFila[cols] + "</b></font></td>"); if(cols==(unaFila.length - 1)) out.println("<td><font color=red><b>acción</b></font></td>"); } else { // los registros out.println("<td>"+unaFila[cols]+"</td>"); //out.println("<td>" + (unaFila[cols].length()!=0 ? unaFila[cols] : " ") + "</td>"); if(cols==(unaFila.length-1)) { // en fila[0] está el ID out.println("<td> <a href='ProyectoUPD.jsp?Id_Proyecto=" + unaFila[0] + "'><img src='../images/upd.gif' border=0 title='Editar'></a>"); out.println(" <a href='ProyectoDEL.jsp?Id_Proyecto=" + unaFila[0] + "'><img src='../images/del.gif' border=0 title='Eliminar'></a></td>"); } } } out.println("</tr>"); } out.println("</table>"); } %>
Nombre de Proyecto|Nombre de Fase|
Proyecto 1 | Fase 1|
Proyecto 2 | Fase 1|
Proyecto 1| Fase 2|
Y lo que quiero hacer es que lo muestre de la siguiente manera..
Proyecto 1|Fase 1|Fase 2|
Proyecto 2|Fase 1|
Proyecto 3|Fase 1|Fase 2|Fase 3|Fase n...|
Adjunto mi metodo consulta:
Código HTML:
static public Vector consulta(String sql) {
Vector regs = new Vector();
try {
ConectaDB db = new ConectaDB();
Connection cn = db.getConnection();
if (cn == null) {
regs = null;
} else {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rm = rs.getMetaData();
int numCols = rm.getColumnCount();
// Toma los títulos de las columnas
String[] titCols= new String[numCols];
for(int i=0; i<numCols; ++i)
titCols[i]= rm.getColumnName(i+1);
// la fila 0 del vector lleva los títulos de las columnas
regs.add(titCols);
// toma las filas de la consulta
while(rs.next()) {
String[] reg= new String[numCols];
for(int i=0; i<numCols; i++) {
reg[i] = rs.getString(i + 1);
}
regs.add(reg);
}
rs.close();
st.close();
cn.close();
}
} catch(SQLException e) {
regs= null;
} catch(Exception e) {
regs= null;
}
return regs;
}


