3
respostas

Join de uma tabela com duas chaves estrangeiras

Buenas,a dúvida é que a tabela venda ela possui o ID do cliente e do produto como chave estrangeira,entretanto gostaria de puxar outras informações delas utilizando o join,consigo fazer o mesmo no banco (postgresql) só que ao trazer pro java não consigo :/

    public List<Venda>listarVendas(){ //GOSTARIA DE LISTAR A VENDA POR  UM INNER JOIN  
        List<Venda>listaVendas= new ArrayList<>();
        try {
            Connection connection = Conexao.getInstance().getConnection();

            String sql = "SELECT * FROM VENDAS ";
            PreparedStatement statement =connection.prepareStatement(sql);
            ResultSet resultset=statement.executeQuery();
            while(resultset.next()) {
                Venda venda = new Venda();
                venda.setIdCompra(resultset.getInt("idcompra"));
                venda.setData(resultset.getString("datacompra"));
                venda.setIdCliente(resultset.getInt("idcliente"));
                venda.setIdProduto(resultset.getInt("idproduto"));
                venda.setCodigoCompra(resultset.getInt("codigocompra"));

                listaVendas.add(venda);
            }
            statement.close();
            connection.close();


        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return listaVendas;

    }

CODIGO DO JOIN : SELECT CLIENTE.NOME AS "CLIENTE" ,CLIENTE.CPF,CLIENTE.NUMEROCONTA,PRODUTO.NOME AS "PRODUTO" ,PRODUTO.VALOR,VENDAS.DATACOMPRA,VENDAS.CODIGOCOMPRA FROM CLIENTE JOIN VENDAS USING(IDCLIENTE) JOIN PRODUTO USING (IDPRODUTO) ORDER BY CLIENTE.NOME;

3 respostas

Fala ai Felipe, tudo bem ?

Se não me engano você pode fazer isso com jdbc da forma que está fazendo.

Outra solução é talvez migrar isso para jpa, que oferece boas práticas e lá você conseguiria fazer isso com maior tranquilidade.

tudo bem,obrigado a dica e o auxilio ,é um trabalho da faculdade,consequentemente o sistema precisa ser em JDBC

Puts, sendo assim, você consegue escrever da forma que fez, só precisa baixar os campos que precisa do resultado