Usando a sintaxe SELECT 5 no ADO
Autor:Eve Cole
Data da Última Atualização:2009-05-30 19:54:26
Juntar
As conexões JOIN combinam registros de campo em duas tabelas, incluindo três tipos:
Fórmula de operação INNER JOIN: une e combina registros de campo em duas tabelas.
Fórmula de operação LEFT JOIN: une e combina registros de campo em duas tabelas e incluirá todos os registros na tabela esquerda de LEFT JOIN.
Fórmula de operação RIGHT JOIN: une e combina registros de campo em duas tabelas e incluirá todos os registros da tabela do lado direito de RIGHT JOIN.
INNER JOIN define a expressão de operação relacionada a duas tabelas para conectar e combinar os registros de campo nas duas tabelas.
A sintaxe do INNER JOIN é a seguinte:
FROM Tabela 1 INNER JOIN Tabela 2 ON Tabela 1. Campo 1 Operador de comparação Tabela 2. Campo 2
Os campos usados para conectar duas tabelas, como [Tabela 1. Campo 1 = Tabela 2. Campo 2], devem ter o mesmo tipo de campo, mas os nomes dos campos não precisam ser iguais.
Por exemplo, o tipo de campo Numeração Automática pode ser conectado ao tipo de campo Longo, mas o tipo de campo Inteiro Único não pode ser conectado ao tipo de campo Inteiro Duplo.
Os operadores de comparação podem ser =, <, >, <=, >= ou <>.
Os campos conectados por JOIN não podem conter tipos de campo MEMO ou tipos de objeto OLE, caso contrário ocorrerá um erro.
Em uma expressão JOIN, múltiplas cláusulas ON podem ser conectadas:
SELECIONAR campos
FROM tabela 1 INNER JOIN tabela 2
ON Tabela 1. Campo 1 Tabela de operadores de comparação 2. Campo 1 AND
ON Tabela 1. Campo 2 Tabela de operadores de comparação 2. Campo 2) OR
ON tabela 1. campo 3 tabela de operadores de comparação 2. campo 3)
Expressões JOIN podem ser aninhadas:
SELECIONAR campos
DA TABELA 1 INNER JOIN
(Tabela 2 INNER JOIN [( ]Tabela 3
[INNER JOIN [( ] tabela x [INNER JOIN ...)]
ON Tabela 3. Campo 3 Tabela de operadores de comparação x.
ON Tabela 2. Campo 2 Tabela de operadores de comparação 3. Campo 3)
ON Tabela 1. Campo 1 Tabela de operadores de comparação 2. Campo 2
Em um INNER JOIN, LEFT JOIN ou RIGHT JOIN aninhados podem ser incluídos, mas em um LEFT JOIN ou RIGHT JOIN, INNER JOIN aninhado não pode ser incluído.
Vejamos um exemplo de uso deste comando SQL em um programa ASP.
Você pode usar Inner Join...On para combinar os registros nas duas tabelas. Por exemplo, o programa ASP rs26.asp é o seguinte, [Selecione Código de Vendas, Nome do Produto, Quantidade de Vendas. Inner Join Product On Product. Code = Sales.Code], use Inner Join...On para definir a fórmula de cálculo relacionada às duas tabelas e combinar os registros nas duas tabelas:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Definir rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Selecione Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesInner Join ProductOn Product.Code = Sales.Code"
rs3.Abrir sql,conn1,1,1,1
%>
<TABELA COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nome</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preço</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantidade</FONT></TD>
</TR>
<% Faça enquanto não rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
</TR>
<%
rs3.MoveNext
Laço
rs3.Fechar
%>
</TABELA>
O programa ASP rs26.asp acima usa um navegador no lado do cliente para navegar pelos resultados da execução e exibir os registros nas duas tabelas combinadas. Como não há campos de nome e campos de preço na tabela de vendas, [Inner Join Product On Product. Code = Sales.Code] Encontre os dados no campo nome e no campo preço da tabela de produtos.
O exemplo acima usa a sintaxe de Inner Join:
Selecione Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesInner Join ProductOn Product.Code = Sales.Code
O resultado é o mesmo que o seguinte usando Where:
Selecione Sales.Code, Product.Name, Product.Price, Sales.Quantity de Sales, ProductWhere Product.Code = Sales.Code
JUNTE-SE À ESQUERDA / JUNTE-SE À DIREITA
A conexão INNER JOIN combina registros de campos relacionados em duas tabelas, que é uma conexão interna.
Use a operação LEFT JOIN: para criar uma junção externa esquerda. Além de obter os registros dos campos relacionados nas duas tabelas, LEFT JOIN também incluirá todos os registros na tabela esquerda de LEFT JOIN, independentemente de haver registros correspondentes na tabela direita.
Use a operação RIGHT JOIN: Crie uma conexão externa direita. Além de obter os registros dos campos relacionados nas duas tabelas, RIGHT JOIN também incluirá todos os registros na tabela direita de RIGHT JOIN, independentemente de haver registros correspondentes na tabela esquerda.
Por exemplo, [Sales LEFT JOIN Products] pode selecionar todos os registros de vendas. [Vender produtos RIGHT JOIN] Todos os registros de produtos podem ser selecionados.
Por exemplo, usar Left Join...On não apenas obtém os registros de campo relacionados nas duas tabelas, mas também inclui todos os registros na tabela esquerda de LEFT JOIN. O programa ASP rs26.asp é o seguinte, [Selecionar vendas. code, product.name, product .Price, Sales.Quantity from SalesLeft Join ProductOn Product.Code = Sales.Code], usar Left Join inclui todos os registros na tabela de vendas no lado esquerdo de LEFT JOIN:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
'conn1.Open "driver={SQL Server};servidor=(Local);uid=sa;pwd=;banco de dados=NtopSamp"
Definir rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Selecione Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesLeft Join ProductOn Product.Code = Sales.Code"
rs3.Abrir sql,conn1,1,1,1
%>
<TABELA COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nome</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preço</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantidade</FONT></TD>
</TR>
<% Faça enquanto não rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
Laço
rs3.Fechar
%>
</TABELA>
Para o programa ASP rs26.asp acima, use o navegador do lado do cliente para navegar pelos resultados da execução. A exibição contém todos os registros na tabela de vendas no lado esquerdo de LEFT JOIN. na tabela de vendas, o registro de vendas com número de código 4, através de [Sales Left Join Product On Product.Code = Sales.Code], são encontrados os dados do campo nome e do campo preço da tabela produto. do campo nome e do campo preço não foram encontrados.
Usar Right Join...On não apenas obtém os registros de campo relacionados nas duas tabelas, mas também inclui todos os registros na tabela direita do RIGHT JOIN. Por exemplo, o programa ASP rs26.asp é o seguinte, [Select Sales. .Code, Product.Name, Product .Price, Sales.Quantity from Sales Right Join Product On Product.Code = Sales.Code], usar Right Join inclui todos os registros na tabela de produtos no lado direito de RIGHT JOIN:
<%
Definir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Driver Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Definir rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Selecione Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesRight Join ProductOn Product.Code = Sales.Code"
rs3.Abrir sql,conn1,1,1,1
%>
<TABELA COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nome</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preço</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantidade</FONT></TD>
</TR>
<% Faça enquanto não rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
Laço
rs3.Fechar
%>
</TABELA>
Para o programa ASP rs26.asp acima, use o navegador no lado do cliente para navegar pelos resultados da execução. A exibição contém todos os registros na tabela de produtos no lado direito do RIGHT JOIN. tabela, é passado o registro do produto com número de código 4 [ Sales Right Join Product On Product.Code = Sales.Code] Os dados do campo quantidade da tabela vendas são encontrados. encontrado.
Entendeu?