Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas con la base de datos

Estas en el tema de Problemas con la base de datos en el foro de Bases de Datos General en Foros del Web. Hola a todos pues bien la duda que tengo y espero puedan ayudarme a resolver es la siguiente: estoy relizando una consulta de una pagina ...
  #1 (permalink)  
Antiguo 18/03/2009, 18:11
Avatar de optimus100  
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 3 meses
Puntos: 0
Exclamación Problemas con la base de datos

Hola a todos pues bien la duda que tengo y espero puedan ayudarme a resolver es la siguiente:

estoy relizando una consulta de una pagina web con JSP y struts hacia una base de datos con MySQL. Tengo 6 tablas relacionadas (socios, actividad1, actividad2, actividad3, casilleros y regaderas). El siguiente codigo es con el cual realizao la consulta:
Código PHP:
public ConsultarSociosVO ConsultarFolio (ConsultarSociosVO conVO)throws Exception
{
    try{
    if(
this.conexion==null){
    
this.getConnection();
    }
    final 
String Sql " SELECT * FROM socios INNER JOIN actividad_1 ON socios.fsocio=actividad_1.fsocio"+
                       
" INNER JOIN actividad_2 ON socios.fsocio=actividad_2.fsocio"+
                       
" INNER JOIN actividad_3 ON socios.fsocio=actividad_3.fsocio"+
                       
" INNER JOIN rentacasilleros ON socios.fsocio=rentacasilleros.fsocio"+
                       
" INNER JOIN rentaregaderas ON socios.fsocio=rentaregaderas.fsocio"+
                       
" WHERE socios.fsocio=?";

    
pst conexion.prepareStatement(Sql);
        
pst.setInt(1conVO.getFsocio());
       
/* pst.setInt(2, conVO.getFsocio());
        pst.setInt(3, conVO.getFsocio());
        pst.setInt(4, conVO.getFsocio());*/
    
resultSet pst.executeQuery();

    while(
resultSet.next()){
        
conVO.setFsocio(resultSet.getInt("fsocio"));
        
conVO.setNombre(resultSet.getString("nombre"));
        
conVO.setPaterno(resultSet.getString("app"));
        
conVO.setMaterno(resultSet.getString("apm"));
        
conVO.setfinsc(resultSet.getString("finscripcion"));
        
conVO.setfexamen(resultSet.getString("fexamen"));
        
conVO.setNombre2(resultSet.getString("nombre2"));
        
conVO.setPaterno2(resultSet.getString("app2"));
        
conVO.setNombre3(resultSet.getString("nombre3"));
        
conVO.setPaterno3(resultSet.getString("app3"));
        
conVO.setAct1(resultSet.getString("actividad"));
        
conVO.setDias1(resultSet.getString("dias"));
        
conVO.setTser1(resultSet.getString("servicio"));
        
conVO.setInst1(resultSet.getString("instructor"));
        
conVO.setfinicio(resultSet.getString("finicio"));
        
conVO.setftermino(resultSet.getString("ftermino"));
        
conVO.setAct2(resultSet.getString("actividad2"));
        
conVO.setDias2(resultSet.getString("dias2"));
        
conVO.setTser2(resultSet.getString("servicio2"));
        
conVO.setInst2(resultSet.getString("instructor2"));
        
conVO.setfinicio2(resultSet.getString("finicio2"));
        
conVO.setftermino2(resultSet.getString("ftermino2"));
        
conVO.setAct3(resultSet.getString("actividad3"));
        
conVO.setDias3(resultSet.getString("dias3"));
        
conVO.setTser3(resultSet.getString("servicio3"));
        
conVO.setInst3(resultSet.getString("instructor3"));
        
conVO.setfinicio3(resultSet.getString("finicio3"));
        
conVO.setftermino3(resultSet.getString("ftermino3"));
        
conVO.setTcasillero(resultSet.getString("tcasillero"));
        
conVO.setLocal(resultSet.getString("localizacion"));
        
conVO.setNumCasi(resultSet.getString("numero"));
        
conVO.setfinicioCa(resultSet.getString("finicioCa"));
        
conVO.setfterminoCa(resultSet.getString("fterminoCa"));
        
conVO.setVismen(resultSet.getString("visita_mensual"));
        
conVO.setfregaini(resultSet.getString("finicioRe"));
        
conVO.setfregater(resultSet.getString("fterminoRe"));

        }
//// fin del while
        
resultSet.close();
        
pst.close();
        
this.conexion.close();
    }
/// fin del try

    
catch(Exception e){
        
System.out.println(e.getMessage());
          throw new 
Exception(e.getMessage()); 
    }
return 
conVO;


La consulta la realiza de manera optima (bien) cuando todas y cada una de las tablas contienen informacion sobre un cliente, pero el problema que tengo es que cuando una de las tablas no aparece la informacion de un cliente (Ya que no es necesario llenar todas las tablas, al menos que el cliente asi lo desee) no realiza la busqueda y por lo tanto no me muestra informacion alguna sobre algun cliente determinado. Al ejecutar el problama y revisarlo linea por linea el error aparece cuando al entrar al WHILE no accede a las siguientes sentencias y se "salta" hasta finalizar el WHILE.

No se si habra algun comado o algo que me pueda ayudar a evitar este problema???????
  #2 (permalink)  
Antiguo 19/03/2009, 10:33
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 3 meses
Puntos: 45
Respuesta: Problemas con la base de datos

En vez de INNER JOIN usa LEFT JOIN de esa manera no será necesario el dato en al otra tabla

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 19/03/2009, 14:29
Avatar de optimus100  
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problemas con la base de datos

Muchas gracias por responder Genetix gracias a tu comentario he solucionado el problema
  #4 (permalink)  
Antiguo 20/03/2009, 08:51
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 3 meses
Puntos: 45
Respuesta: Problemas con la base de datos

De nada
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:44.