Ir para conteúdo

POWERED BY:

Arquivado

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

Boris

Inner Join

Recommended Posts

Galera não sei como usar Inner Join e por isso estou acompanhando um tutorial mas não está dando certo.

 

o que acontece eu tenho dois bancos que no qual quero comparar valores de duas tabelas uma de cada banco

 

BANCOS

hb

sys_bd

 

-

 

TABELA

hb = loja_venda_pgto

sys_bd = tb_fecha_caixa

 

<%

select tb_fecha_caixa.codigo_filial, loja_venda_pgto.codigo_filial from hb.dbo.loja_venda_pgto as a inner join sys_bd.dbo.tb_fecha_caixa as loja_venda_pgto
on tb_fecha_caixa.codigo_filial = loja_venda_pgto.codigo_filial 

Set Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

%>

<% =Dados("codigo_filial") %>

Está aparecendo o seguinte erro:

 

 

Erro de compilação do Microsoft VBScript erro '800a03fd'

 

'Case' esperado

 

/sys_hbf/busca_relat_diferenca.asp, line 109

 

select tb_fecha_caixa.codigo_filial, loja_venda_pgto.codigo_filial from handbook.dbo.loja_venda_pgto as a inner join sys_bd.dbo.tb_fecha_caixa as loja_venda_pgto

-------^

 

 

Alguém pode me ajudar ?

 

Valew Galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso geralmente pode acontecer quando você tem um executar semconectar ao objeto de conexão, por exemplo:

 

<% 
	set conn = CreateObject("ADODB.Connection") 
	set rs = execute("SELECT column FROM table") 
%>

tente mudar o nome nao deixando sys_bd.dbo.tb_fecha_caixa , para sys_bd_dbo.tb_fecha_caixa

 

e testa esse modo

<%

SQL="select tb_fecha_caixa.codigo_filial, loja_venda_pgto.codigo_filial from hb.dbo.loja_venda_pgto as a inner join sys_bd.dbo.tb_fecha_caixa as loja_venda_pgto
on tb_fecha_caixa.codigo_filial = loja_venda_pgto.codigo_filial"

Set Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

%>

<% =Dados("codigo_filial") %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso geralmente pode acontecer quando você tem um executar semconectar ao objeto de conexão, por exemplo:

 

<% 
	set conn = CreateObject("ADODB.Connection") 
	set rs = execute("SELECT column FROM table") 
%>

tente mudar o nome nao deixando sys_bd.dbo.tb_fecha_caixa , para sys_bd_dbo.tb_fecha_caixa

 

e testa esse modo

<%

SQL="select tb_fecha_caixa.codigo_filial, loja_venda_pgto.codigo_filial from hb.dbo.loja_venda_pgto as a inner join sys_bd.dbo.tb_fecha_caixa as loja_venda_pgto
on tb_fecha_caixa.codigo_filial = loja_venda_pgto.codigo_filial"

Set Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

%>

<% =Dados("codigo_filial") %>

 

Eu fiz da forma que me passou

 

<%

set conn = CreateObject("ADODB.Connection")   '##################################
set rs = execute("SELECT * FROM tb_fecha_caixa") 'LINHA 110

SQL="select tb_fecha_caixa.codigo_filial, loja_venda_pgto.codigo_filial from hb.dbo.loja_venda_pgto as a inner join sys_bd.dbo.tb_fecha_caixa as loja_venda_pgto on tb_fecha_caixa.codigo_filial = loja_venda_pgto.codigo_filial"


Set Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 


%>

<% =Dados("codigo_filial") %>

 

mas apareceu este erro:

 

Erro de compilação do Microsoft VBScript erro '800a03fd'

 

'Case' esperado

 

/sys_hbf/busca_relat_diferenca.asp, line 110

 

 

 

Galera minha conexao está assim :

 

set conexao01=server.CreateObject("adodb.connection")
dados_cmax = "Provider=sqloledb;Data Source=CM\SQLEXPRESS;Initial Catalog=Hb;User Id=sa;Password=123456;"
conexao01.open dados_cmax

Eu não teria que abrir uma conexao para o banco sys_bd ?

 

E se sim como eu faria isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

set rs = conexao01.execute("SELECT * FROM tb_fecha_caixa")

Compartilhar este post


Link para o post
Compartilhar em outros sites

set rs = conexao01.execute("SELECT * FROM tb_fecha_caixa")

 

mas neste caso eu não teria que especificar qual é o banco na instrução acima ele apenas indica a tabela correto ...

 

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi sua observação, mas se você já está mandando executar a consulta, você tem que informar a conexão para executar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi sua observação, mas se você já está mandando executar a consulta, você tem que informar a conexão para executar.

É que me baseando por uma conexao

 

set conexao01=server.CreateObject("adodb.connection")
dados_cmax = "Provider=sqloledb;Data Source=CM\SQLEXPRESS;Initial Catalog=Hb;User Id=sa;Password=123456;"
conexao01.open dados_cmax

não teria que ter algo semelhante que indicasse o outro banco de dados tipo

 

set conexao01=server.CreateObject("adodb.connection")
dados_cmax = "Provider=sqloledb;Data Source=CM\SQLEXPRESS;Initial Catalog=Hb;User Id=sa;Password=123456;"
dados_cmax = "Provider=sqloledb;Data Source=CM\SQLEXPRESS;Initial Catalog=sys_bd;User Id=sa;Password=123456;"
conexao01.open dados_cmax

estou indo pela logica .... entendeu...

 

 

Valew hargon

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não entendi a sua observação, mas se você usar da forma que você postou acima, vai dar o erro no CASE pq você está chamando somente o método EXECUTE. Esse método serve para executar linhas inteiras, desde funções a simples variáveis. Deu erro pq é entendido que você quis dizer SELECT CASE ao informar SELECT no EXECUTE.

 

Faça as alterações que falei, se o erro persistir, poste como está seu código.

 

Obs. você pode criar a conexão somente uma vez e utilizá-la em todo o código, não precisa fazer isso a data consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não entendi a sua observação, mas se você usar da forma que você postou acima, vai dar o erro no CASE pq você está chamando somente o método EXECUTE. Esse método serve para executar linhas inteiras, desde funções a simples variáveis. Deu erro pq é entendido que você quis dizer SELECT CASE ao informar SELECT no EXECUTE.

 

Faça as alterações que falei, se o erro persistir, poste como está seu código.

 

Obs. você pode criar a conexão somente uma vez e utilizá-la em todo o código, não precisa fazer isso a data consulta.

O erro que apareceu agora foi o seguinte:

 

Microsoft OLE DB Provider for SQL Server erro '80040e37' 

Invalid object name 'tb_fecha_caixa'. 

/sys_hbf/busca_relat_diferenca.asp, line 116

Obrigado mais uma vez pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando acessar o campo pela tabela, mas você criou uma "alias" para a tabela. Altera sua SQL para:

SELECT B.codigo_filial FROM loja_venda_pgto A INNER JOIN tb_fecha_caixa B ON A.codigo_filial = B.codigo_filial

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando acessar o campo pela tabela, mas você criou uma "alias" para a tabela. Altera sua SQL para:

SELECT B.codigo_filial FROM loja_venda_pgto A INNER JOIN tb_fecha_caixa B ON A.codigo_filial = B.codigo_filial

Poste o resultado.

 

Apareceu está mensagem

 

Microsoft OLE DB Provider for SQL Server erro '80040e37'

 

Invalid object name 'tb_fecha_caixa'.

 

/sys_hbf/busca_relat_diferenca.asp, line 111

 

 

vou postar todo o meu codigo.

<!--#include file="conexao01.asp"-->
<html>
<title></title>
<style type="text/css">
<!--
.style1 {font-size: 16px}
-->
</style>
<head>
</head>
<link href="style.css" rel="stylesheet" type="text/css">
<body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<br>
<table width="630" border="0" align="center" cellpadding="1" cellspacing="0">
  <tr>
	<td bgcolor="#ffcc66"><table width="640" height="480" border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td bgcolor="#FFFFFF"><table width="640" border="0" cellspacing="0" cellpadding="0">
			<tr>
			  <td height="25" bgcolor="#ffcc66"> </td>
			</tr>
			<tr>
			  <td height="405" align="left" valign="top"><form name="busca" method="post" action="busca_relat_diferenca.asp">
				<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
				  <tr>
					<td height="50" valign="top"> </td>
				  </tr>
				  <tr>
					<td height="10" align="center" valign="middle"><table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
						<tr>
						  <td height="28" background="Imagens/line_fundo.jpg"><div align="right">
							  <TABLE width="100%" border=0 align=center cellPadding=0 cellSpacing=0 class=texto>
								<TR>
								  <TD height="1" align="center" nowrap><table width="100%" height="24" border="0" cellspacing="2">
									  <tr align=center class=texto>
										<td width="33%" height="23"><div align="right" class="style48"><span class="LegendaTxt"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Loja</font></strong></span><span class="style50"><font face="Verdana, Arial, Helvetica, sans-serif">
											<% 
Set Dados = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM filiais where cod_filial<>'999999' and cod_filial<>'000001' and cod_filial<>'000002' and cod_filial<>'000004' and cod_filial<>'000009' and cod_filial<>'000020' and cod_filial<>'000021' and cod_filial<>'777777' and cod_filial<>'000008' order by filial asc"
Dados.Open SQL, conexao01, 3 
%>
											<font face="Verdana, Arial, Helvetica, sans-serif">
											<select class="LegendaTxt"  name='filial'>
											  <option value='0'>Selecione</option>
											  <%
If Not Dados.EOF Then
  While Not Dados.EOF
	Response.Write "<OPTION VALUE='" & Dados("filial") & "'"
	If Request("cod_filial") = Dados("filial") Then Response.Write " selected"
	Response.Write ">" & Dados("filial") & "</OPTION>"
	Dados.MoveNext
  Wend
End If
%>
											</select>
											</font>
											<%
set Dados = Nothing
%>
										</font></span></div></td>
										<td width="17%"> </td>
										<td width="31%" height="23" class="LegendaTxt"><span class="style48"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Data</font></strong>
											<input type="text" name="frm_data" class="LegendaTxt">
										</span></td>
										<td width="8%"> </td>
										<td width="11%"><div align="left"><strong><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif">
											<input type="image" src=Imagens/buscar.jpg align=absmiddle style="font-family=Tahoma; font size=10" id=image12 name=image1>
										</font></strong></div></td>
									  </table></TD>
								</TR>
							  </TABLE>
						  </div>
							  <div align="center"></div></td>
						</tr>
						<tr>
						  <td height="36" valign="top"><table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
							  <tr>
								<td height="300" valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0">
									<tr bgcolor="#FFFFFF">
									  <td valign="top"><div align="center"><span class="style31"><br>
									  </span></div>
										  </td>
									</tr>
								</table>
								  <div align="center"><span class="LoginBox style1">Resultado da Busca </span><br>
								  </div>
								  <table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
									<tr>
									  <td height="207" valign="top" bgcolor="#FFFFFF"><div align="center"><font face="Comic Sans MS"> </font>
											  <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
												<tr>
												  <td><table width="98%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#F7F7F7">
													  <tr>
														<td><table width="100%" border="0" cellpadding="0" cellspacing="0">
															<tr>
															  <td width="20%" height="22" class="cx"><div align="center" class="style47"></div></td>
															  <td width="22%" class="cx"><div align="center" class="style47"></div></td>
															  <td width="16%" class="cx"><div align="center" class="style47"></div></td>
															  <td width="17%" class="cx"><div align="center" class="style47"></div></td>
															  <td width="25%" class="cx"><div align="center" class="style47"></div></td>
															</tr>
														</table></td>
													  </tr>
													  <tr>
														<td valign="top">
<%
'##############################################################
'ESTE É MEU CODIGO DA CONEXAO
'set conexao01=server.CreateObject("adodb.connection")
'dados_cmax = "Provider=sqloledb;Data Source=CM\SQLEXPRESS;Initial Catalog=Hb;User Id=sa;Password=123456;"
'conexao01.open dados_cmax
'##############################################################

set rs = conexao01.execute("SELECT * FROM tb_fecha_caixa")

SQL="SELECT loja_venda_pgto.codigo_filial FROM loja_venda_pgto INNER JOIN tb_fecha_caixa ON tb_fecha_caixa.codigo_filial = loja_venda_pgto.codigo_filial "

Set Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

%>														
									
<% 

'filial = Request.form("filial") 


'a=0
'SQL  = "SELECT * FROM CLIENTES_VAREJO"
'clausula=""
'if filial<>"0" then
'   if a=0 then 
'   clausula = clausula & " where filial='"&filial&"'"
'   a=a+1
'   else
'   clausula = clausula & " and filial='"&filial&"'"
'   end if
'end if

'sql=sql&clausula

'if filial="0" then

'clausula=clausula&"where filial=''"

'end if

'response.Write sql:response.end

'total = 0
'while not Dados.EOF
'total = total + 1
'Dados.MoveNext
'wend

'if total > 0 then
'   Dados.MoveFirst
%>
															<table border="0" width="100%" cellspacing="1">
<% while not Dados.EOF %>
															  <tr>
																<td width="20%" height="20" bgcolor="#F0F0F0" class="style39"><div align="center" class="LegendaTxt">					
																	<% =Dados("codigo_filial") %>
																</div></td>
																<td width="22%" bgcolor="#F0F0F0" class="style39"><div align="center" class="style36"><span class="LegendaTxt">
																  <%' =Dados("filial") %>
																</span></div></td>
																<td width="16%" bgcolor="#F0F0F0" class="style39"><div align="center" class="style36"></div></td>
																<td width="17%" bgcolor="#F0F0F0" class="style39"><div align="center" class="style36"></div></td>
																<td bgcolor="#F0F0F0" class="style39"><div align="right" class="style36">
																	<div align="center">
																	 
																  </div>
																</div></td>
															  </tr>
															  <%

Dados.MoveNext
wend

%>
															</table>
<%

'end if
'Dados.close
'wend
'Set Dados = Nothing

%>
														</td>
													  </tr>
												  </table></td>
												</tr>
											  </table>
									  </div></td>
									</tr>
									<tr>
									  <td height="10" valign="top" bgcolor="#FFFFFF"><div align="center"></div></td>
									</tr>
								  </table></td>
							  </tr>
						  </table></td>
						</tr>
						<tr>
						  <td height="19" valign="top"><table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
						  </table></td>
						</tr>
					</table></td>
				  </tr>
				</table>
			  </form></td>
			</tr>
			<tr>
			  <td height="50" bgcolor="#ffcc66">			   </td>
			</tr>
		</table>
</td>
	  </tr>
	</table></td>
  </tr>
</table>
</body>
</html>

Eu não consegui fazer ainda.

 

 

Obrigado mais uma vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe a tabela tb_fecha_caixa no seu banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe a tabela tb_fecha_caixa no seu banco?

Então é o que comentei e você não entendeu eu tenho dois bancos um deles é o HB que tem a tebela loja_venda_pgto e o outro banco é o sys_bd que tem a tabela tb_fecha_caixa

 

Entendeu são dois bancos que tem duas tabelas distintas que preciso fazer um relacionamento e não estou conseguindo...

 

 

Obrigado pela força e pelo interesse de me ajudar, já procurei mas o que encontrei não deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente não havia entendido isso. Mas agora que entendi posso lhe dizer que nunca vi algo parecido.

 

No máximo você pode usar esse conceito e criar duas tabelas dinamicamente, mas dependendo da quantidade de registos, nem vale apena.

 

Os dois bancos são SQL Server? Se quiser posso mover o tópico para essa área, se existir essa possibilidade, certamente saberão lhe informar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente não havia entendido isso. Mas agora que entendi posso lhe dizer que nunca vi algo parecido.

 

No máximo você pode usar esse conceito e criar duas tabelas dinamicamente, mas dependendo da quantidade de registos, nem vale apena.

 

Os dois bancos são SQL Server? Se quiser posso mover o tópico para essa área, se existir essa possibilidade, certamente saberão lhe informar.

 

valew Hargon, gostaria sim Obrigado

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.