olá pessoal, estou desenvolvendo uma aplicação simples, com um banco de dados que possui 3 tabelas apenas.
Uma tabela Contato que possui
idcontato
nome
idade
datanasc
idcategoria
Categoria
idcategoria
descricao
Detalhes
iddetalhes
idcontato
idcategoria
observacoes
Quero fazer um Inner join para que eu consiga mostrar o nome, idade do contato, categoria e observacoes sobre este contato… no inicio, tentei fazer so com nome, categoria e observacoes… mas nem assim consegui… sei o que está no comando sql, olhem como está:
public List<Contato> pesquisarComInnerJoin(String descricao) throws ClassNotFoundException, SQLException{
List<Contato> contatos = new LinkedList<Contato>();
String sql = "SELECT c.idcontato, cat.descricao, d.observacoes FROM contato as c inner join categoria as cat on c.idcategoria = cat.idcategoria inner join Detalhes as d on c.idcontato = d.idcontato where c.nome=?";
PreparedStatement ps = getPreparedStatement(sql);
ps.setString(1, descricao);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Contato contato = new Contato();
contato.setIdContato(rs.getInt("idcontato"));
contato.setNome(rs.getString("nome"));
contato.setIdContato(rs.getInt("idcontato"));
contato.setNome(rs.getString("nome"));
contato.setIdade(rs.getInt("idade"));
contato.setDatanasc(rs.getDate("datanasc"));
contato.setIdcategoria(rs.getInt("idcategoria"));
contatos.add(contato);
}
rs.close();
ps.close();
return contatos;
}
}
Se eu tirar o WHERE, funciona… mas preciso que o usuário digite um noome ou o ID do contato para CONSULTAR, no meu caso, se eu tirar o where, ele executa de forma com que o usuario nao digite nada… funciona, mas quero que ele informe o contato que quer pesquisar…
vlw gente