Select em mais de uma tabela

5 respostas
R

Boa noite pessoal , estou com uma duvida sobre dar um select no banco em 2 ou mais tabelas ao mesmo tempo por exemplo:

pst = cx.prepareStatement("SELECT * FROM Pages p , Usuario u WHERE p.pagina =? AND u.pagina=?");
	    pst.setString(1, pages.getPagina());
	    rs = pst.executeQuery();
	    try{
	      if (rs.next()){
	    	  Pages pagesBean = getPageFromSql(rs);
	    	  return true;
	      }
	    }

private Pages [color=red]getPageFromSql[/color](ResultSet rs) throws SQLException, ClassNotFoundException {
		Pages  retorno = new Pages();
		retorno.setPagina(rs.getString("pagina"));
		retorno.setDescricao(rs.getString("descricao"));
		retorno.setGrupo(rs.getString("grupo"));
		
		return retorno;
		
	  }

Como eu trato esse metodo getPageFromSql para receber os valores e jogar nos dois beans? no Caso o Pages e Usuarios, Obrigado.

5 Respostas

joede.fadel
rib:
Boa noite pessoal , estou com uma duvida sobre dar um select no banco em 2 ou mais tabelas ao mesmo tempo por exemplo:
pst = cx.prepareStatement("SELECT * FROM Pages p , Usuario u WHERE p.pagina =? AND u.pagina=?");
	    pst.setString(1, pages.getPagina());
	    rs = pst.executeQuery();
	    try{
	      if (rs.next()){
	    	  Pages pagesBean = getPageFromSql(rs);
	    	  return true;
	      }
	    }

private Pages getPageFromSql (ResultSet rs) throws SQLException, ClassNotFoundException {
		Pages  retorno = new Pages();
		retorno.setPagina(rs.getString("pagina"));
		retorno.setDescricao(rs.getString("descricao"));
		retorno.setGrupo(rs.getString("grupo"));
		
		return retorno;
		
	  }

Como eu trato esse metodo getPageFromSql para receber os valores e jogar nos dois beans? no Caso o Pages e Usuarios, Obrigado.


vamos do comerçar do começo :D

a sua SLQ não está montada de um modo muito usual acredito que essa que eu estou passando resolva o seu problema, e do jeito que vc fez está faltando parametros no prepareStantement
SELECT * FROM Pages p , Usuario u WHERE p.pagina = u.pagina AND p.pagina = ?
para jogar em 2 beans é simples
pst = cx.prepareStatement("SELECT * FROM Pages p , Usuario u WHERE p.pagina =? AND u.pagina=?");
	    pst.setString(1, pages.getPagina());
	    rs = pst.executeQuery();
	    try{
	      if (rs.next()){
	    	  Pages pagesBean = getPageFromSql(rs);
                  Usuarios usuariosBean = getPageFromSql(rs);
	    	  return true;
	      }
	    }

acredito que isso resolva o seu problema

R
Então depois é só eu jogar  o objeto de cada bean dentro da minha lista ai fica assim? Muito obrigado joede.fadel.
    try{
     statement = cx.createStatement();
     resultSet = statement.executeQuery("SELECT * FROM Pages p , Usuario u WHERE p.pagina =? AND u.pagina=?");
      while(resultSet.next()){
        Login login2 = getLoginFromSqlGrupo(resultSet);
        Pages pagesBean = getPageFromSql(rs);   
        list.add(login2);
        list.add(pagesBean);
 

      }
    }
   catch (SQLException e){
   e.printStackTrace();  
   }
     return list;
}
delegada_ti

Oi! só uma observação no select… não está faltando também o campo de relacionamento entre as duas tabelas, dentro da cláusula WHERE… Algo como page_id = usuario_id ?

R

delegada_ti , obrigado pela observação mas o select é tranquilo a duvida é mesmo em adicionar os resultados na lista , mesmo assim Obrigado.

joede.fadel

delegada_ti:
Oi! só uma observação no select… não está faltando também o campo de relacionamento entre as duas tabelas, dentro da cláusula WHERE… Algo como page_id = usuario_id ?

Eu só esqci de especificar que era o id

Criado 12 de fevereiro de 2009
Ultima resposta 13 de fev. de 2009
Respostas 5
Participantes 3