As duas, e as outras interligadas, já estão povoadas. Como eu faço pra selecionar o preço que seja maior que 50 da tabela LIVRO ou o livro que começe com a letra p da tabela ASSUNTO?
ass_sigla é a primary key da tabela assunto, e a tabela livro tá recebendo a ass_sigla como uma fk
Xmio
select * from livro liv inner join assunto ass on (liv.ass_sigla = ass.ass_sigla)
WHERE
liv.liv_preco >50
ass.ass_descricao ilike 'p%'
As duas linhas de where contem seus filtros.. o i em frente ao like ira ignorar o upercase
jrmelo
Boa tarde!
Cria dois métodos em sua classe DAO um para consultar o preço do livro e outro para consultar a descrição da tabela assunto.
Por exemplo:
publicList<Livro>consultaPreco(Livrolivro,Stringcondicao){Stringsql="Select l.liv_codigo, l.titulo from livro l "+"inner join assunto a "+"on l.ass_sigla = a.ass_sigla "+"where l.liv_preco "+condicao+"?";List<Livro>lista=newArrayList<Livro>();try{PreparedStatementstmt=connection.prepareStatement(sql);stmt.setLong(1,livro.getPreco());ResultSetrs=stmt.executeQuery();while(rs.next()){Livroliv=newLivro();liv.setCodigo(rs.getLong("liv_codigo"));liv.setTitulo(rs.getString("titulo"));lista.add(liv);}rs.close();stmt.close();returnlista;}catch(SQLExceptione){// TODO Auto-generated catch blockthrownewRuntimeException(e);}}
publicList<Assunto>consultaDescricao(Assuntoass){Stringsql="Select a.ass_sigla, a.ass_descricao from assunto a "+"inner join livro l "+"on a.ass_sigla = l.ass_sigla "+"where a.ass_descricao "+"like ?";List<Assunto>lista=newArrayList<Assunto>();try{PreparedStatementstmt=connection.prepareStatement(sql);stmt.setLong(1,ass.getAssDescricao());ResultSetrs=stmt.executeQuery();while(rs.next()){Assuntoa=newAssunto();a.setAssSigla(rs.getString("ass_sigla"));a.setAssDescricao(rs.getString("ass_descricao"));lista.add(a);}rs.close();stmt.close();returnlista;}catch(SQLExceptione){// TODO Auto-generated catch blockthrownewRuntimeException(e);}}
Aí você adapta ao que desejar de retorno.
Outrossim, com o Hibernate economizará em código e trabalhará de uma outra forma, mas a essência é a mesma.