É possível eu fazer o seguinte:
1 - Tenho um método que realiza uma consulta no banco.
2 - Tenho um segundo método que realiza uma outra consulta no banco.
3 - Eu quero criar um terceiro método que pegue o resultado da consulta dos dois primeiros métodos, junte-os e mostre sem repetições.
Abaixo eu posto os métodos:
-> Neste primeiro, seleciono os itens da tabela produtos com o distinct, quando eles aparecem em alguma nota de entrada
[code] private static void listaProdutosEntradas(ProdutoSC filtro, Transacao t) {
try {
SQL sql = new SQL(t);
sql.add("SELECT DISTINCT p.cod as codProd, p.nome as nomeProd, u.sigla ");
sql.add("FROM etqnfe e, etquni u, etqprod p INNER JOIN etqnfe_item nfe ");
sql.add("ON nfe.id_prod = p.id ");
sql.add("WHERE nfe.id_nfe = e.id ");
sql.add("AND e.dt_rec BETWEEN :dtInicial AND :dtFinal ");
sql.add("AND p.id_uni_sai = u.id ");
sql.add("AND e.id_uni = :id_uni ");
sql.add("AND e.id_emp = :id_emp ");
sql.add("ORDER BY codProd ");
sql.setParam("id_uni", filtro.unidade.id);
sql.setParam("id_emp", Sessao.getEmpresaLogada().id);
sql.setParam("dtInicial", filtro.dtInicial);
sql.setParam("dtFinal", filtro.dtFinal);
} catch (Exception e) {
Msg.alert(null, "Erro ao gerar SQL. " + e.getLocalizedMessage());
e.printStackTrace();
}
}[/code]
-> Neste segundo, seleciono os itens da tabela produtos com o distinct, quando eles aparecem em alguma nota de saída
[code]private static void listarProdutosSaidas(ProdutoSC filtro, Transacao t) {
try {
SQL sql = new SQL(t);
sql.add("SELECT DISTINCT p.cod as codProd, p.nome as nomeProd, u.sigla ");
sql.add("FROM pdvnfs s, etquni u, etqprod p INNER JOIN pdvnfs_item nfs ");
sql.add("ON nfs.id_prod = p.id ");
sql.add("WHERE nfs.id_nfs = s.id ");
sql.add("AND s.dt_emis BETWEEN :dtInicial AND :dtFinal ");
sql.add("AND p.id_uni_sai = u.id ");
sql.add("AND s.id_uni = :id_uni ");
sql.add("AND s.id_emp = :id_emp ");
sql.add("ORDER BY codProd ");
sql.setParam("id_uni", filtro.unidade.id);
sql.setParam("id_emp", Sessao.getEmpresaLogada().id);
sql.setParam("dtInicial", filtro.dtInicial);
sql.setParam("dtFinal", filtro.dtFinal);
} catch (Exception e) {
Msg.alert(null, "Erro ao gerar SQL. " + e.getMessage());
e.printStackTrace();
}
}[/code]
O que eu quero fazer, é pegar o primeiro sql, juntar com o segundo sql, e exibir todos os itens (codProd e nomeProd), sem repetições.
Alguém expert em SQL se dispõe a me ajudar? Ou alguém sugere uma outra forma para mim fazer isso? Tentei fazer tudo em um sql só, mas não ficou legal, creio que assim, ganho em performance. E cada sql, separado, já está testado e retornando o resultado que eu quero. Resta junta-los.
O que eu poderia retornar em cada um desses dois métodos, que eu conseguisse pegar no terceiro, e fazer esta separação que eu quero. Pensei em HashMap, mas não sei, por isso estou buscando ajuda.
Agradeço.