Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cabral51

iNNER JOIN

Recommended Posts

Galrea postei no forum de asp, pq posteriormente posso vir a tirar outra duvida neste mesmo topico apos fazer a consulta ao banco!!!Bom tenhu q fazer consultas em campos de 4 tableas distintas e preciso dar um inner join!!!As tabelas são:ClientesProcessosPedidosParcelasonde clientes.cadastro q faz a ligação com processos.cadastro_proca tabela de prcesso se liga a de pedidos pelo campo processos.processo=pedidos.fin_processoe a tabela pedido se amarra a de parcelas pelo campo pedidos.fin_ped=parcelas.fin_pedidocomo fazer um inner join em tudo isso?????Tenhu a seguinte consulta: strSql="SELECT CLIENTES.ACESSO, CLIENTES.CADASTRO, PROCESSOS.CADASTRO_PROC, PROCESSOS.PROCESSO, PROCESSOS.MARCA, PEDIDOS.FIN_PED, PEDIDOS.FIN_PROCESSO, PEDIDOS.FIN_DT_PED, PEDIDOS.FIN_VR_PED , PEDIDOS.FIN_SERVICO, PEDIDOS.FIN_COMPOSICAO_SERV, PARCELAS.FIN_PEDIDO, PARCELAS.FIN_PARCELA, PARCELAS.FIN_VR_PARC, PARCELAS.VCTO_PARC FROM PROCESSOS,PARCELAS,PEDIDOS INNER JOIN CLIENTES ON CLIENTES.CADASTRO= processos.CADASTRO

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce tem que ver o que voce precisar recuperarnao pode ser assim um "inner join com isso tudo"tem que ser mais especifico em sua duvidae pra fazer JOIN tem que ter campos relacionados entre si

Compartilhar este post


Link para o post
Compartilhar em outros sites

como disse diga o que voce precisa recuperaré tudo de todos as tabelas ou sao apenas alguns campos?tem que especificar mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

são alguns campos vou passálo para vocÊ!

 

SELECT CLIENTES.N_CLI, CLIENTES.CONTATO, CLIENTES.EMPRESA, CLIENTES.CNPJ, CLIENTES.RESPONS_PROCESSO, CLIENTES.ACESSO, CLIENTES.CADASTRO, CLIENTES.CONTATO PROCESSOS.CADASTRO_PROC, PROCESSOS.PROCESSO, PROCESSOS.MARCA, PEDIDOS.FIN_PED, PEDIDOS.FIN_PROCESSO, PEDIDOS.FIN_DT_PED, PEDIDOS.FIN_VR_PED , PEDIDOS.FIN_SERVICO, PEDIDOS.FIN_COMPOSICAO_SERV, PARCELAS.FIN_PEDIDO, PARCELAS.FIN_PARCELA, PARCELAS.FIN_VR_PARC, PARCELAS.VCTO_PARC

 

são esses campos do select, que vem da tabela clientes, processos, pedidios e parcelas e serão colocados nesta tabela dessa forma:

<table width="962" border="1" align="center">			 <tr bgcolor="#FFEBD7">			   <td colspan="9" class="style18"><div align="center">Valores Pagos </div></td>			 </tr>			 			 <tr bgcolor="#DBF0FB">			   <td width="109" height="26" class="style18"><div align="center">Processo</div></td>			   <td width="157" height="26" class="style18"><div align="center">Marca</div></td>			   <td width="90" class="style18"><div align="center">Serviço</div></td>			   <td width="66" class="style18"><p align="center">Data<br>				 Pedido</p>			   </td>			   <td width="81" class="style18"><div align="center">Valor<br>				 Pedido</div></td>			   <td width="125" height="26" class="style18"><div align="center">Campos<br> 			   Valor </div></td>			   <td width="109" class="style18"><p align="center">Nº<br>				 Parcelas			   </p>			   </td>			   <td width="71" class="style18"><div align="center">Valor<br>				 Parcelas</div></td>			   <td width="96" class="style18"><div align="center">Data de<br>				 Vencimento da <br>			   Parcela</div></td>			 			 </tr>			 <%			 while not tbbanco1.eof			 if tbbanco1("fin_dt_rec_ch")<>"" then			 %>			 <tr bgcolor="#FFEBD7">			 	<%if tr bgcolor="#FFEBD7" then					tr bgcolor="#DBF0FB"					else tr bgcolor="#FFEBD7"%>			   <td height="26" class="style18"><div align="center"><%=tbbanco1("processo")%></div></td>			   <td height="26" class="style18"><div align="center"><%=tbbanco1("marca")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_servico")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_dt_ped")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vr_ped")%></div></td>			   <td height="26" class="style18"><div align="center"><%=tbbanco1("fin_composicao_serv")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_parcela")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vr_parc")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vcto_parc")%></div></td>			 </tr>			 <%			 end if			 tbbanco1.movenext			 wend			 %>	</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

e aee cabral!

 

veja se é por ai o caminho:

 

SELECT CLIENTES.ACESSO, PROCESSOS.PROCESSO, PROCESSOS.MARCA, PEDIDOS.FIN_SERVICO, PEDIDOS.FIN_DT_PED, PEDIDOS.FIN_VR_PED, PEDIDOS.FIN_CONPOSICAO_SERV, PARCELAS.FIN_PARCELA, PARCELAS.FIN_VR_PARC, PARCELAS.FIN_VCTO_PARCFROM ((CLIENTES INNER JOIN PROCESSOS ON CLIENTES.CADASTRO = PROCESSOS.CADASTRO_PROC) INNER JOIN PEDIDOS ON PROCESSOS.PROCESSO = PEDIDOS.FIN_PROCESS0) INNER JOIN PARCELAS ON PEDIDOS.FIN_PED = PARCELAS.FIN_PEDIDOWHERE (((CLIENTES.ACESSO)='"&codigox&"'));

obs:usei o codigox como variavel de parametro para localizar registros atraves do campo acesso, concorme o outro post...se o parametro for outro campo é só modificar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aeeeeeeeeeee exatamente isso!!!Valew a todos ae e ao jonathan especialemnte que esta me ajudando muito!!Brigadaum, so mais uam coisa jonathan nesse caso tb era importante usar o inner join que nem no outro post?? e pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque você tem relacionamento entre tabelas. Sempre que uma tabela passa o valor pra outra criando um relacionamento devemos usar o inner join para unir os dados, assim fica um código mais simples, limpo e correto. Da maneira que você estava fazendo iria funcionar, mas creio que perderia em desempenho e organização pois daria muito mais trabalho fazer no minimo 5 where pra chegar onde queria.Procure umas apostilas sobre instruções sql que vale a pena. Depis você usa até mesmo o access pra gerar um inner join pra facilitar tua vida, mas você tem que entender como funcionam e onde aplicar.Com sql você faz quase tudo no banco, é só usar da maneira correta.Abração...qualquer problema...post novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

A entendeu agora o inner join hehehe!!

To com o seguinte codigo:

 

<%		strsql="SELECT CLIENTES.ACESSO,CLIENTES.N_CLI, CLIENTES.EMPRESA, CLIENTES.CNPJ, CLIENTES.CONTATO, CLIENTES.RESPONS_PROCESSO, PROCESSOS.PROCESSO, PROCESSOS.MARCA, PEDIDOS.FIN_SERVICO, PEDIDOS.FIN_DT_PED, PEDIDOS.FIN_VR_PED, PEDIDOS.FIN_CONPOSICAO_SERV, PARCELAS.FIN_PARCELA, PARCELAS.FIN_VR_PARC, PARCELAS.FIN_VCTO_PARC"		strsql= strsql & " FROM ((CLIENTES INNER JOIN PROCESSOS ON CLIENTES.CADASTRO = PROCESSOS.CADASTRO_PROC) INNER JOIN PEDIDOS ON PROCESSOS.PROCESSO = PEDIDOS.FIN_PROCESS0) INNER JOIN PARCELAS ON PEDIDOS.FIN_PED = PARCELAS.FIN_PEDIDO"		strsql= strsql & " WHERE (((CLIENTES.ACESSO)='"&codigox&"'))"		set tbBanco1=banco.Execute(strSQL)		'response.Write(strsql)		'response.End()		if not tbbanco1.eof then 		%>	<p align="left" class="style12 style48"><span class="style50">- Empresa:</span></span>		  <span class="style18">	<% =tbbanco1("empresa")%>		  </span>	<span class="style18"><br>	<span class="style50">- Cliente:</span></span> 		  <span class="style18"><%=tbbanco1("n_cli")%><br>		  </span>		  <span class="style12">- Responsável:</span> 		  <span class="style18"><%=tbbanco1("RESPONS_PROCESSO")%></span>		  <br><span class="style12">- CNPJ:</span>	<span class="style18"><%=tbbanco1("cnpj")%>		   </span><span class="style49"><br>		  <span class="style50">- Contato:</span> </span>  <span class="style18"><%=tbbanco1("contato")%></span></p></p><form name="form3" method="post" action="envia_marca.asp">		  <p class="style20" align="center">Pendências</p>		   <br>		   <table width="962" border="1" align="center">			 <tr bgcolor="#FFEBD7">			   <td colspan="9" class="style18"><div align="center">Valores Pagos </div></td>			 </tr>			 			 <tr bgcolor="#DBF0FB">			   <td width="109" height="26" class="style18"><div align="center">Processo</div></td>			   <td width="157" height="26" class="style18"><div align="center">Marca</div></td>			   <td width="90" class="style18"><div align="center">Serviço</div></td>			   <td width="66" class="style18"><p align="center">Data<br>				 Pedido</p>			   </td>			   <td width="81" class="style18"><div align="center">Valor<br>				 Pedido</div></td>			   <td width="125" height="26" class="style18"><div align="center">Campos<br> 			   Valor </div></td>			   <td width="109" class="style18"><p align="center">Nº<br>				 Parcelas			   </p>			   </td>			   <td width="71" class="style18"><div align="center">Valor<br>				 Parcelas</div></td>			   <td width="96" class="style18"><div align="center">Data de<br>				 Vencimento da <br>			   Parcela</div></td>			 			 </tr>			 <%			 while not tbbanco1.eof			 %>			 <%if wcor="#FFEBD7" then					 wcor="#DBF0FB"					else wcor="#FFEBD7"					END IF			  if tbbanco1("FIN_DT_REC_CH")<>"" then%>			 <tr bgcolor=<%=wcor%>>			 							 %>			 			   <td height="26" class="style18"><div align="center"><%=tbbanco1("processo")%></div></td>			   <td height="26" class="style18"><div align="center"><%=tbbanco1("marca")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_servico")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_dt_ped")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vr_ped")%></div></td>			   <td height="26" class="style18"><div align="center"><%=tbbanco1("fin_composicao_serv")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_parcela")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vr_parc")%></div></td>			   <td class="style18"><div align="center"><%=tbbanco1("fin_vcto_parc")%></div></td>		  			 </tr>			 <%end if			 tbbanco1.movenext			 wend			 %>

ta dando esse erro

 

ADODB.Recordset error '800a0cc1'

 

Item cannot be found in the collection corresponding to the requested name or ordinal.

 

/manutencao/pendencias.asp, line 174

 

a linha 174 eh esta

 

if tbbanco1("FIN_DT_REC_CH")<>"" then%>

 

mas esse cmapo existe no bd pq da errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

hei cabral....te liga só....antes você fazia assim:select * from tabela where campo='x'para não carregar o recordset selecionamos apenas os campos necessarios:select campo1, campo2, campo3 from tabela where campo='x'Perceba que não usei o asterisco e sim o nome de cada campo na tabela. No inner join fazemos a mesma coisa, então você terá que acrescentar os campos que deseja exibir que não foram selecionados no sql.Veja que no sql não está selecionado entre o SELECT e o FROM o campo FIN_DT_REC_CH. É só acrescenta-lo usando a virgula para separar dos demais

Compartilhar este post


Link para o post
Compartilhar em outros sites

jonathan eu preciso mostrar os valores pgos e apagar, ali eu coloco uma consulta para os valores pagos, porem preciso mostrar os apagar e o q resulta isso eh o campo fin_dt_rec_ch se ele naum for nulo vai mosrtra os valroes pagos se for nulo mostra os valores a pagar, porem ele pode ser em um processo nulo e outro a pagar entaum vou ter que fazer outra consulta???uma para os apagar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso eu acho melhor você fazer com sql como eram antes....primeiro você seleciona os campo de identificação(cliente, cnpj,etc) de acordo com o códigodepois você faz um sql para os pagamentos usando o mesmo parametro e cria uma condiçãoif rs("fin_dt_rec_ch")="" thenresponse.write("não pagou")'no seu caso você manda escrever o campo do recordset que desejarelseresponse.write("pagou")end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.