Dois "SELECTS"

13 respostas
arthurgon

Olá galera…uma dúvida…é possível usar dois “SELECTS” diferentes em campos e tabelas dentro de um mesmo método numa classe?
EX:

StringBuffer query = new StringBuffer();

query.append("SELECT ");

query.append("CLC.ID_CPG, ");

query.append("FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG, ");

query.append("CLC.CD_ATIVO, ");

query.append("CLC.CD_ORGAO_PUBLICO ");

query.append("FROM ");

query.append("CLIENTE_COMPLEMENTO CLC ");

query.append("WHERE ");

query.append("CLC.ID_CLI = ? ");
query.append("SELECT ");
			
			query.append("CC.ID_CLI, ");
			query.append("CC.ID_CONTA, ");
			query.append("CC.VL_LIM_DIA, ");
			query.append("CC.VL_LIM_GLOB_CONCEDIDO, ");
			query.append("CC.VL_LIM_GLOB_DISPONIVEL, ");
			query.append("CC.VL_LIM_COMP_DISPONIVEL, ");
			query.append("CC.DT_BASE, ");
			query.append("CC.CD_AFINIDADE ");
		
			query.append("FROM ");
			query.append("CLIENTE_CARTAO CC ");
			
			query.append("WHERE ");
			query.append("CC.ID_CLI = ? ");

			
                            PreparedStatement ps = null;
			ResultSet rs = null;

13 Respostas

Andre_Fonseca

arthurgon:
Olá galera…uma dúvida…é possível usar dois “SELECTS” diferentes em campos e tabelas dentro de um mesmo método numa classe?
EX:

StringBuffer query = new StringBuffer();

query.append("SELECT ");

query.append("CLC.ID_CPG, ");

query.append("FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG, ");

query.append("CLC.CD_ATIVO, ");

query.append("CLC.CD_ORGAO_PUBLICO ");

query.append("FROM ");

query.append("CLIENTE_COMPLEMENTO CLC ");

query.append("WHERE ");

query.append("CLC.ID_CLI = ? ");
query.append("SELECT ");
			
			query.append("CC.ID_CLI, ");
			query.append("CC.ID_CONTA, ");
			query.append("CC.VL_LIM_DIA, ");
			query.append("CC.VL_LIM_GLOB_CONCEDIDO, ");
			query.append("CC.VL_LIM_GLOB_DISPONIVEL, ");
			query.append("CC.VL_LIM_COMP_DISPONIVEL, ");
			query.append("CC.DT_BASE, ");
			query.append("CC.CD_AFINIDADE ");
		
			query.append("FROM ");
			query.append("CLIENTE_CARTAO CC ");
			
			query.append("WHERE ");
			query.append("CC.ID_CLI = ? ");

			
                            PreparedStatement ps = null;
			ResultSet rs = null;

vc não pode fazer??

StringBuffer query = new StringBuffer(); query.append("SELECT "); query.append("CLC.ID_CPG, "); query.append("FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG, "); query.append("CLC.CD_ATIVO, "); query.append("CLC.CD_ORGAO_PUBLICO "); query.append("CC.ID_CLI, "); query.append("CC.ID_CONTA, "); query.append("CC.VL_LIM_DIA, "); query.append("CC.VL_LIM_GLOB_CONCEDIDO, "); query.append("CC.VL_LIM_GLOB_DISPONIVEL, "); query.append("CC.VL_LIM_COMP_DISPONIVEL, "); query.append("CC.DT_BASE, "); query.append("CC.CD_AFINIDADE "); query.append("FROM "); query.append("CLIENTE_COMPLEMENTO CLC, CLIENTE_CARTAO CC "); query.append("WHERE "); query.append("CLC.ID_CLI = CC.ID_CLI") query.append("CLC.ID_CLI = ? ");

fbeli

cara, vc vai ter só 1 resultset pra cada statemente executado.

mais fácil vc dizer o q vc ta querendo inventar!

Pq não usar “from tabela1 t1, tavbela2 t2”

arthurgon

Então…o fato é que preciso acrescentar dados novos do Banco em uma tela de consulta
que já existe, porém, esses dados chegam de tabelas diferentes.

arthurgon

Só pra complementar…essas tabelas não estão relacionadas…

fbeli

select t1.nome as nome, t2.idade, t2.sexo from tabela1 t1, tabela t2

assim vc faz o select de 2 tabelas.

pode usar o where, join, qqr coisa.

obs, acho q o seu problema está em SQL não com java.

arthurgon

Realmente…o galho está no SQL. De qq forma…entendi mais ou menos .

arthurgon

Fiz desse jeito…e os valores vieram vazios nos campos. Tem outra forma?

SELECT CLC.ID_CPG,FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG,CLC.CD_ATIVO,
CLC.CD_ORGAO_PUBLICO, CC.ID_CLI, CC.ID_CONTA,CC.VL_LIM_DIA,CC.VL_LIM_GLOB_CONCEDIDO,CC.VL_LIM_GLOB_DISPONIVEL,
CC.VL_LIM_COMP_DISPONIVEL,CC.DT_BASE,CC.CD_AFINIDADE FROM CLIENTE_COMPLEMENTO CLC, CLIENTE_CONTA CC
WHERE CLC.ID_CLI = CC.ID_CLI AND CC.ID_CLI=CLC.ID_CLI;

RenataFA

Bom, não conheco a estrutura do seu BD, mas creio que não trouxe nada justamente pq q vc disse, as tabelas nao se relacionam, cada uma é uma coisa diferente, sendo assim, tente algo parecido com o abaixo, informe o ID do cliente em cada tabela... ou por acaso ele é o msm? Se for melhor ainda!

Se ele não for o mesmo (o ID):

SELECT CLC.ID_CPG,
       FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG,
       CLC.CD_ATIVO,
       CLC.CD_ORGAO_PUBLICO,
       CC.ID_CLI,
       CC.ID_CONTA,
       CC.VL_LIM_DIA,
       CC.VL_LIM_GLOB_CONCEDIDO,
       CC.VL_LIM_GLOB_DISPONIVEL,
       CC.VL_LIM_COMP_DISPONIVEL,
       CC.DT_BASE,
       CC.CD_AFINIDADE

  FROM CLIENTE_COMPLEMENTO CLC, CLIENTE_CARTAO CC

 WHERE CLC.ID_CLI = ?
   AND CC.ID_CLI = ?

Se ele for o mesmo (o ID):

SELECT CLC.ID_CPG,
       FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG,
       CLC.CD_ATIVO,
       CLC.CD_ORGAO_PUBLICO,
       CC.ID_CLI,
       CC.ID_CONTA,
       CC.VL_LIM_DIA,
       CC.VL_LIM_GLOB_CONCEDIDO,
       CC.VL_LIM_GLOB_DISPONIVEL,
       CC.VL_LIM_COMP_DISPONIVEL,
       CC.DT_BASE,
       CC.CD_AFINIDADE

  FROM CLIENTE_COMPLEMENTO CLC
left join CLIENTE_CARTAO CC on CC.id_cli = CLC.id_cli

 WHERE CLC.ID_CLI = ?
arthurgon

Oi Renata;
Valeu pela resposta…muito obrigado mesmo. Sou péssimo com SQL.
Então…no primeiro caso ele me volta o valor apenas da primeira tabela, e no segundo caso…
considerando q sejam IDs iguais, ele me volta as colunas vazias. O que poderia ser??

Andre_Fonseca

achei que o ID_CLI fosse igual para as duas tabelas… :frowning:

arthurgon

Oi Renata;
Deu certo…os campos apareceram…mas o JSP não tá trazendo por algum motivo. To usando Struts 1. Tem alguma idéia
do que poderia ser?
To mapeando os campos no Struts-config…mesmo sendo só pesquisa.
Valeu

RenataFA

Que bom que deu certo!

Então amigo, sobre sua última dúvida vamos esperar que alguém responda… java pra web não é meu forte e não me arrisco a dar algum palpite… :wink:

Boa sorte!

arthurgon

Aí galera…se alguem puder me ajudar. To customizando um projeto q foi feito faz uns tres anos e ainda com JDBC.
Com ajuda do pessoal do GUJ (valeu Renata) consegui a query correta pra um join entre duas tabelas om IDs distintos.
O fato é q agora o JSP não está conseguindo ler esses novos dados q terei de acrescentar. A tela já existe e é de consulta.
Segue abaixo a query q utilizei e os dados q “deveriam” ser vizualizados.
Se alguem souber um pouco de Struts…por favor me ajudem…
Abraço.

  1. SELECT CLC.ID_CPG,
  2. FNCT_CONDICAO_PAGTO_JAVA(CLC.ID_CPG) NM_CPG,
    
  3. CLC.CD_ATIVO,
    
  4. CLC.CD_ORGAO_PUBLICO,
    
  5. CC.ID_CLI,
    
  6. CC.ID_CONTA,
    
  7. CC.VL_LIM_DIA,
    
  8. CC.VL_LIM_GLOB_CONCEDIDO,
    
  9. CC.VL_LIM_GLOB_DISPONIVEL,
    
  10. CC.VL_LIM_COMP_DISPONIVEL,
    
  11. CC.DT_BASE,
    
  12. CC.CD_AFINIDADE
    
  13. FROM CLIENTE_COMPLEMENTO CLC, CLIENTE_CARTAO CC
  14. WHERE CLC.ID_CLI = ?
  15. AND CC.ID_CLI = ?
Criado 2 de abril de 2008
Ultima resposta 3 de abr. de 2008
Respostas 13
Participantes 4