Duvida SQL

2 respostas
D

Estou com um problema em uma consulta que estou fazendo no banco de dados. Estou tentando trazer para a tela todos os Produtores e seus respectivos Endereços através do seguinte comando SQL.
Estou utilizando este código para enviar uma string para impressora, mas para testar estou somente mandando imprimir o resultado na tela. Segue o código:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:odbc:testejava","sa","mtn1239"); 
 Statement stmt = con.createStatement(); 
 stmt.execute("SELECT FProdutor.NomeProd, " + 
 " FProdEnd.Endereco FROM FProdutor ,FProdEnd" + 
 " WHERE (FProdutor.CodProd = FProdEnd.CodProd)");

ResultSet results = stmt.getResultSet();
            
while (results.next()) {
                
String NomeProd = results.getString("NomeProd");
System.out.println("NomeProd:" + NomeProd);
                
String Endereco = results.getString("Endereco");
System.out.println("Endereco:" + Endereco);
                
String suaString1=Endereco; 
char[] ch1 =suaString1.toCharArray();
                
                for(int i=0;i<ch1.length;i++) { 
                    if(ch1[i]=='á') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Á') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ã') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Ã') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ç') { 
                        ch1[i]='c'; 
                    }
                    if(ch1[i]=='Ç') { 
                        ch1[i]='C'; 
                    }
                    if(ch1[i]=='é') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='É') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='ê') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='Ê') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='í') { 
                        ch1[i]='i'; 
                    }
                    if(ch1[i]=='Í') { 
                        ch1[i]='I'; 
                    }
                    if(ch1[i]=='ó') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ó') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ô') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ô') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='õ') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Õ') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ú') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ú') { 
                        ch1[i]='U'; 
                    }
                    if(ch1[i]=='ü') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ü') { 
                        ch1[i]='U'; 
                    }
                }
                System.out.println(ch1);
                
                
                String suaString=NomeProd; 
                char[] ch =suaString.toCharArray();
                
                for(int i=0;i<ch.length;i++) { 
                    if(ch[i]=='á') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Á') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ã') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Ã') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ç') { 
                        ch[i]='c'; 
                    }
                    if(ch[i]=='Ç') { 
                        ch[i]='C'; 
                    }
                    if(ch[i]=='é') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='É') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='ê') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='Ê') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='í') { 
                        ch[i]='i'; 
                    }
                    if(ch[i]=='Í') { 
                        ch[i]='I'; 
                    }
                    if(ch[i]=='ó') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ó') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ô') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ô') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='õ') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Õ') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ú') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ú') { 
                        ch[i]='U'; 
                    }
                    if(ch[i]=='ü') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ü') { 
                        ch[i]='U'; 
                    }
                } 
                System.out.println(ch);

Só que quando manda exibir o resultado ele pega somente o primeiro produtor da tabela FProdutor, cujo CodProd consta na tabela FProdEnd. Agradeço se alguém puder me ajudar.

2 Respostas

wandersonxs

Não está certo?

Você está fazendo um INNER JOIN…

“SELECT FProdutor.NomeProd, " +
" FProdEnd.Endereco FROM FProdutor ,FProdEnd” +
" WHERE (FProdutor.CodProd = FProdEnd.CodProd)

Se você quiser que traga todos os registros da tabela FProdutor faça um Outer Join…

Falow´s
Wanderson

:snipersmile: :shock:

D

Valeu wandersonxs, mas pelo que pude perceber o comando Outer Join me retorna todas as linhas existentes em uma tabela, mesmo que as linhas correspondentes não existam na tabela unida. Sendo que o que preciso é trazer dados que satisfaçam a minha cláusula WHERE. Me corrijam se estiver errado. Não consegui fazer funcionar o comando, pois não sei como é a sua sintaxe, no livro que tenho mostra como utilizá-lo em um banco Oracle, onde utilizo o (+). Em meu programa testei da seguinte maneira:

SELECT FP.NomeProd as nome, " + 
                    "        FPE.Endereco as endereco " +
                    " FROM FProdutor FP ,FProdEnd FPE " +
                    " WHERE FP.CodProd = FPE.CodProd(+)")

Não consegui fazer funcionar, o programa não chegou a acusar erro, mas quando mandei rodar simplesmente caiu fora direto, acho que o Select não funcionou desta maneira como coloquei. Agradeço se alguém tiver uma dica. Abraço!

Criado 17 de setembro de 2004
Ultima resposta 21 de set. de 2004
Respostas 2
Participantes 2