Problemas LEFT JOIN E SELECT

8 respostas
napa

Ae pessoal, estou no trabalho e uma duvida me corroe o cerebro ja fazem 2 dias…

Estou inserindo uma coluna em uma aplicacao, eu ja possuo a coluna CODE, vou inserir a coluna NAME, para trazer a descricao de cada codigo da coluna CODE. Como realizo esse procedimento? O sistema ja tem 2 colunas que sao assim, me espelhei nelas, mas ele me mostra apenas a coluna inserida, e nao retorna nenhum valor.
Alguem ajuda por favor?

Obrigado []s

8 Respostas

adriano_si

Aff… Kd o Select que vc fez ?? O que de fato está ocorrendo ?? Não está conseguindo criar a coluna, ou não está conseguindo trazê-la do Banco ??? Falta explicar mais a dúvida aí…

napa

Entao, nao da erro, ele apenas me mostra a coluna inserida, mas eu dei o LEFT JOIN para o relacionamento das tabelas e nao traz as informacoes, a coluna fica em branco.

Queria saber se isso eh problema da classe que comunica com o banco, ou se poder ser outra coisa…

Porque ateh onde tenho meu conhecimento um tanto quanto basico, pensei que por nao trazer as informacoes, seria problema nessa classe.

napa

Como eu faco pra ter aquela imagem do codigo-fonte? Ai eu te mando e voce da uma olhada.

adriano_si

Então mostra a classe… KD o Select ?? Sem ver, fica difícil dá um diagnóstico…

Usa as Tags CODE que estão aí nos botões antes da sua mensagem…

Falows :wink:

E

Seria mais facil vc postar sua query: abaixo segue um exemplo para tentar te ajudar a perceber a diferenca de qdo usar um INNER JOIN e qdo usar um LEFT JOIN

//usando LEFT JOIN
SELECT a.nome, b.IdOrigemB FROM tabelaA a
LEFT JOIN tabelaB b
ON a.idA = b.idOrigemA
LEFT JOIN tabela b1
ON a.idA = b1.idDestinoB;

//se colcassemos um INNER JOIN no exemplo acima
//teriamos um resultado inconsistente 
//pois os ids origem e destino sao diferente, 
//entao vc nunca iria ter o resultado desejado

//uma consulta simples usando INNER JOIN

SELECT a.idA, b.nome FROM tabelaA a
INNER JOIN tabelaB b
ON a.idA=b.idA;
//ou

SELECT a.idA, b.nome FROM tabelaA a, tabelaB b
WHERE a.idA = b.idA;
adriano_si

Isso na hora de escrever a mensagem OK ??

Dá uma olhada aqui: http://www.guj.com.br/posts/list/50115.java

napa

Estou colocando as partes que eu modifiquei, no caso, o select do codigo e do nome, o resto esta todo certo, por isso nao houve necessidade de aplicar.
Lembrando que : Responsavel eh o codigo, e ResponsavelIdent a nomenclatura.

sql.append(" SELECT  \n");


		//RESPONSAVEL CODIGO
		if(criterios.isResponsavel()){
			sql.append("  ,K.CODE AS STARTUSER \n");
			sql.append("  ,L.CODE AS ENDUSER \n");
		}
		
		//RESPONSAVEL IDENTIFICADO
		if(criterios.isResponsavelIdent()){
			sql.append("  ,K.NAME AS NAME_STARTUSER \n");
			sql.append("  ,L.NAME AS NAME_ENDUSER \n");
		}
                                

		sql.append(" FROM \n");

		sql.append("   VWRESOURCESTATUSEV A \n");


		//left join responsavel
		if(criterios.isResponsavel() || criterios.isResponsavelIdent()){
			sql.append("   LEFT JOIN TBLUSER K ON K.IDUSER = A.IDUSER_START \n");
			sql.append("   LEFT JOIN TBLUSER L ON L.IDUSER = A.IDUSER_END \n");			
		}


		sql.append(" WHERE  \n");

				if(criterios.isResponsavel()){
					vo.setResponsavelInicial(rs.getString("STARTUSER"));
					vo.setResponsavelFinal(rs.getString("ENDUSER"));
				}
				
				if(criterios.isResponsavelIdent()){
					vo.setResponsavelIdent(rs.getString("NAME_STARTUSER"));
					vo.setResponsavelIdent(rs.getString("NAME_ENDUSER"));
				}

Valeusss []s

napa

Estou indo pra Facul, quando chegar em casa eu vejo a resposta. Valeu ai pela atencao… =)

Criado 14 de abril de 2009
Ultima resposta 14 de abr. de 2009
Respostas 8
Participantes 3