Usando la sintaxis SELECT 5 en ADO
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:54:26
Unirse
Las conexiones JOIN combinan registros de campo en dos tablas, incluidos tres tipos:
Fórmula de operación INNER JOIN: une y combina registros de campo en dos tablas.
Fórmula de operación LEFT JOIN: une y combina registros de campo en dos tablas e incluirá todos los registros en la tabla izquierda de LEFT JOIN.
Fórmula de operación RIGHT JOIN: une y combina registros de campo en dos tablas e incluirá todos los registros en la tabla en el lado derecho de RIGHT JOIN.
INNER JOIN establece la expresión de operación relacionada con dos tablas para conectar y combinar los registros de campo en las dos tablas.
La sintaxis de INNER JOIN es la siguiente:
FROM Tabla 1 INNER JOIN Tabla 2 ON Tabla 1. Campo 1 Operador de comparación Tabla 2. Campo 2
Los campos utilizados para conectar dos tablas, como [Tabla 1. Campo 1 = Tabla 2. Campo 2], deben tener el mismo tipo de campo, pero no es necesario que los nombres de los campos sean los mismos.
Por ejemplo, el tipo de campo Autonumérico se puede conectar al tipo de campo Largo, pero el tipo de campo Entero único no se puede conectar al tipo de campo Entero doble.
Los operadores de comparación pueden ser =, <, >, <=, >= o <>.
Los campos conectados por JOIN no pueden contener tipos de campos MEMO ni tipos de objetos OLE; de lo contrario, se producirá un error.
En una expresión JOIN, se pueden conectar varias cláusulas ON:
SELECCIONAR campos
DESDE la tabla 1 INNER JOIN tabla 2
ON Tabla 1. Campo 1 Tabla de operadores de comparación 2. Campo 1 AND
ON Tabla 1. Campo 2 Tabla de operadores de comparación 2. Campo 2) O
ON tabla 1. campo 3 operador de comparación tabla 2. campo 3)
Las expresiones JOIN se pueden anidar:
SELECCIONAR campos
DE LA TABLA 1 UNIÓN INTERNA
(Tabla 2 UNIÓN INTERNA [( ]Tabla 3
[UNIÓN INTERIOR [( ] tabla x [UNIÓN INTERIOR...)]
ON Tabla 3. Campo 3 Tabla de operadores de comparación x. Campo x)]
ON Tabla 2. Campo 2 Tabla de operadores de comparación 3. Campo 3)
ON Tabla 1. Campo 1 Tabla de operadores de comparación 2. Campo 2
En una UNIÓN INTERNA, se puede incluir una UNIÓN IZQUIERDA o UNA UNIÓN DERECHA anidada, pero en una UNIÓN IZQUIERDA o UNA UNIÓN DERECHA, no se puede incluir una UNIÓN INTERIOR anidada.
Veamos un ejemplo del uso de este comando SQL en un programa ASP.
Puede usar Inner Join...On para combinar los registros en las dos tablas. Por ejemplo, el programa ASP rs26.asp es el siguiente: [Seleccione Código de ventas, Nombre del producto, Precio, Ventas. Producto de unión interna en Código de producto = Código de ventas], use Unión interna... Activado para establecer la fórmula de cálculo relacionada con las dos tablas y combine los registros en las dos tablas:
<%
Establecer conexión1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Controlador de Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Establecer rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Seleccione Código.Ventas, Nombre.Producto, Precio.Producto, Cantidad.Ventas de SalesInner Join ProductOn Código.Producto = Código.Ventas"
rs3.Abrir sql,conn1,1,1,1
%>
<TABLA COLSPAN=8 CELLPADDING=5 BORDE=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nombre</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Precio</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Cantidad</FONT></TD>
</TR>
<% Hacer mientras no rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(3)%></TD>
</TR>
<%
rs3.MoverSiguiente
Bucle
rs3.Cerrar
%>
</TABLA>
El programa ASP rs26.asp anterior utiliza un navegador en el lado del cliente para explorar los resultados de la ejecución y mostrar los registros en las dos tablas combinadas. Dado que no hay campos de nombre ni campos de precio en la tabla de ventas, [Inner Join Product On Product. Código = Sales.Code] Busque los datos en el campo de nombre y el campo de precio de la tabla de productos.
El ejemplo anterior utiliza la sintaxis de Inner Join:
Seleccione Código.Ventas, Nombre.Producto, Precio.Producto, Cantidad.Ventas de SalesInner Join ProductOn Código.Producto = Código.Ventas
El resultado es el mismo que el siguiente usando Donde:
Seleccione Código.Ventas, Nombre.Producto, Precio.Producto, Cantidad.Ventas de Ventas, ProductoDonde Código.Producto = Código.Ventas
UNIRSE A LA IZQUIERDA/UNIRSE A LA DERECHA
La conexión INNER JOIN combina registros de campos relacionados en dos tablas, que es una conexión interna. También puede utilizar:
Utilice la operación LEFT JOIN: para crear una unión exterior izquierda. Además de obtener los registros de campo relacionados en las dos tablas, LEFT JOIN también incluirá todos los registros en la tabla izquierda de LEFT JOIN, independientemente de si hay registros coincidentes en la tabla derecha.
Utilice la operación RIGHT JOIN: cree una conexión exterior derecha. Además de obtener los registros de los campos relacionados en las dos tablas, RIGHT JOIN también incluirá todos los registros en la tabla derecha de RIGHT JOIN, independientemente de si hay registros coincidentes en la tabla izquierda.
Por ejemplo, [Ventas LEFT JOIN Products] puede seleccionar todos los registros de ventas. [Vender productos RIGHT JOIN] Se pueden seleccionar todos los registros de productos.
Por ejemplo, usar Left Join...On no solo obtiene los registros de los campos relacionados en las dos tablas, sino que también incluye todos los registros en la tabla izquierda de LEFT JOIN. El programa ASP rs26.asp es el siguiente, [Seleccionar ventas. código, producto.nombre, producto.Precio, Ventas.Cantidad de SalesLeft Join ProductOn Product.Code = Sales.Code], el uso de Left Join incluye todos los registros en la tabla de ventas en el lado izquierdo de LEFT JOIN:
<%
Establecer conexión1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Controlador de Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
'conn1.Open "controlador={SQL Server};servidor=(Local);uid=sa;pwd=;database=NtopSamp"
Establecer rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Seleccione Código.Ventas, Nombre.Producto, Precio.Producto, Cantidad.Ventas de SalesLeft Unirse a ProductoEn Código.Producto = Código.Ventas"
rs3.Abrir sql,conn1,1,1,1
%>
<TABLA COLSPAN=8 CELLPADDING=5 BORDE=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nombre</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Precio</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Cantidad</FONT></TD>
</TR>
<% Hacer mientras no rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(3)%></TD>
<%
rs3.MoverSiguiente
Bucle
rs3.Cerrar
%>
</TABLA>
Para el programa ASP rs26.asp anterior, use el navegador en el lado del cliente para explorar los resultados de la ejecución. La pantalla contiene todos los registros en la tabla de ventas en el lado izquierdo de LEFT JOIN, ya que no hay ningún campo de nombre ni campo de precio. de la tabla de ventas, el registro de ventas con el código número 4, hasta [Sales Left Join Product On Product.Code = Sales.Code], se encuentran los datos del campo nombre y campo precio de la tabla de productos. del campo nombre y del campo precio no se encuentran.
El uso de Right Join...On no solo obtiene los registros de los campos relacionados en las dos tablas, sino que también incluye todos los registros en la tabla derecha de RIGHT JOIN. Por ejemplo, el programa ASP rs26.asp es el siguiente, [Seleccionar Ventas. .Code, Product.Name, Product .Price, Sales.Quantity from Sales Right Join Product On Product.Code = Sales.Code], el uso de Right Join incluye todos los registros en la tabla de productos en el lado derecho de RIGHT JOIN:
<%
Establecer conexión1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Controlador de Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;"
Establecer rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Seleccione Código.Ventas, Nombre.Producto, Precio.Producto, Cantidad.Ventas de SalesRight Unirse a ProductoEn Código.Producto = Código.Ventas"
rs3.Abrir sql,conn1,1,1,1
%>
<TABLA COLSPAN=8 CELLPADDING=5 BORDE=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Código</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nombre</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Precio</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Cantidad</FONT></TD>
</TR>
<% Hacer mientras no rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTRO><%= rs3(3)%></TD>
<%
rs3.MoverSiguiente
Bucle
rs3.Cerrar
%>
</TABLA>
Para el programa ASP rs26.asp anterior, use el navegador en el lado del cliente para explorar los resultados de la ejecución. La pantalla contiene todos los registros en la tabla de productos en el lado derecho de RIGHT JOIN, ya que no hay ningún campo de cantidad en el producto. tabla, se pasa el registro de producto con número de código 4 [Derecho de ventas unir producto en Product.Code = Sales.Code] Se encuentran los datos en el campo de cantidad de la tabla de ventas. Para otros códigos, no se encuentran los datos en el campo de cantidad. encontró.
¿Lo entendiste?