Usando la sintaxis SELECT seis en ADO
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:54:23
subconsulta
En una expresión SELECT, SELECT...INTO, INSERT...INTO, DELETE o UPDATE, puede incluir una expresión SELECT. Esta expresión SELECT se denomina subconsulta.
Puede crear subconsultas utilizando tres sintaxis:
Expresión [CUALQUIER | TODOS | ALGUNOS] (subconsulta)
Expresión [NO] IN (subconsulta)
[NO] EXISTE (subconsulta)
Una expresión SELECT de una subconsulta tiene la misma sintaxis que una expresión SELECT general y debe estar entre paréntesis.
Puede utilizar subconsultas para reemplazar operadores en una expresión SELECT o en una cláusula WHERE o HAVING.
Las palabras clave ANY y SOME tienen el mismo significado y se utilizan para seleccionar las condiciones de comparación de cualquier registro que coincida con la subconsulta. Por ejemplo, el siguiente ejemplo devolverá registros en los que el precio unitario del producto es mayor que cualquier cantidad mayor que 100 en el pedido:
SELECCIONAR * DE productos
DONDE precio unitario > CUALQUIER
(SELECCIONE el precio unitario DEL pedido
DONDE cantidad > 100)
La palabra clave TODO se utiliza para seleccionar las condiciones de comparación de todos los registros que coinciden con la subconsulta.
Por ejemplo, en el ejemplo anterior, cambiar CUALQUIER a TODOS devolverá registros en los que el precio unitario del producto es mayor que todos los pedidos con una cantidad superior a 100.
Predicado de palabra clave IN para recuperar ciertos registros que contienen el mismo valor en la consulta principal y solo en la subconsulta. El siguiente ejemplo devuelve todos los productos vendidos con un descuento del 25 por ciento o más:
La palabra clave IN se utiliza para seleccionar registros en la subconsulta. Por ejemplo, el siguiente ejemplo devolverá registros con una cantidad > 100 en el pedido:
SELECCIONAR * DE productos
DONDE ENTRA el código de producto
(SELECCIONE el código de producto DEL pedido
DONDE cantidad > 100)
Por el contrario, la palabra clave NOT IN se utiliza para seleccionar registros que no están incluidos en la subconsulta.
En una comparación verdadero/falso, puede utilizar la palabra clave EXISTS para determinar si la subconsulta devolverá algún registro.
Un ejemplo ASP de la palabra clave TODOS, como el programa ASP rs24.asp es el siguiente: [SELECCIONAR nombre, materia, puntuación del examen donde materia = 'aritmética' y puntuación >= Todo (SELECCIONAR puntuación del examen donde materia = 'aritmética' 'y nombre =' Zhang San')] Encuentre los registros aritméticos de la prueba aritmética cuya puntuación sea mayor o igual a Zhang San:
<%
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 rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECCIONE nombre, materia, puntuación del examen Donde materia = 'Aritmética' y puntuación >= Todo (SELECCIONE puntuación del examen Donde materia = 'Aritmética' y nombre = 'Zhang San')"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Todas las puntuaciones son superiores a la aritmética de Zhang San"
Hacer mientras no rs2.EOF
Respuesta.Escribir "<BR>" & rs2("Nombre") & " " & rs2("Asunto") & " Puntuación: " & rs2("Puntuación")
rs2.MoverSiguiente
Bucle
rs2.Cerrar
%>
El programa ASP anterior rs24.asp utiliza un navegador en el lado del cliente para explorar los resultados de la ejecución y mostrar los registros aritméticos de la prueba aritmética cuyas puntuaciones son mayores o iguales a Zhang San.
Cualquier
La palabra clave CUALQUIER se utiliza para seleccionar las condiciones de comparación de cualquier registro que coincida con la subconsulta. Por ejemplo, el programa ASP rs24.asp es el siguiente, [SELECCIONAR nombre, materia, puntuación del examen Donde materia = 'aritmética' y puntuación >=. Cualquiera (SELECCIONAR puntuación del examen donde Asunto = 'Aritmética' y Nombre = 'Zhang San')] Encuentre los registros cuya fracción sea mayor o igual a cualquier fracción aritmética de Zhang San:
<%
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 rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECCIONE nombre, materia, puntuación del examen Donde materia = 'Aritmética' y puntuación >= Cualquiera (SELECCIONE puntuación del examen Donde materia = 'Aritmética' y nombre = 'Zhang San')"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Cualquier fracción superior a la aritmética de Zhang San"
Hacer mientras no rs2.EOF
Respuesta.Escribir "<BR>" & rs2("Nombre") & " " & rs2("Asunto") & " Puntuación: " & rs2("Puntuación")
rs2.MoverSiguiente
Bucle
rs2.Cerrar%>
El programa ASP rs24.asp anterior utiliza un navegador en el lado del cliente para explorar los resultados de la ejecución y mostrar los registros cuyas puntuaciones son mayores o iguales a cualquier fracción aritmética de Zhang San.
Alguno
Las palabras clave ALGUNOS y CUALQUIER tienen el mismo significado y se utilizan para seleccionar las condiciones de comparación de cualquier registro que coincida con la subconsulta. Por ejemplo, el programa ASP rs24.asp es el siguiente, [SELECCIONAR Nombre, Asunto, Puntuación del examen donde Asunto. = 'Aritmética' y puntuación >= Algunos (SELECCIONAR puntuación del examen donde sujeto = 'Aritmética' y nombre = 'Zhang San')] Encuentre los registros cuyas puntuaciones sean mayores o iguales a cualquier fracción aritmética de Zhang San:
<%
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 rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECCIONE nombre, materia, puntuación del examen Donde materia = 'Aritmética' y puntuación >= Algunos (SELECCIONE puntuación del examen Donde materia = 'Aritmética' y nombre = 'Zhang San')"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Alguna fracción superior a la aritmética de Zhang San"
Hacer mientras no rs2.EOF
Respuesta.Escribir "<BR>" & rs2("Nombre") & " " & rs2("Asunto") & " Puntuación: " & rs2("Puntuación")
rs2.MoverSiguiente
Bucle
rs2.Cerrar
%>
El programa ASP rs24.asp anterior utiliza un navegador en el lado del cliente para explorar los resultados de la ejecución y mostrar los registros cuyas puntuaciones son mayores o iguales a cualquier fracción aritmética de Zhang San.
Seleccionar...En
Seleccionar...En creará una tabla generada basada en los resultados de la consulta.
La sintaxis es la siguiente:
SELECCIONE el campo 1[,campo 2[, ...]] EN la nueva tabla[EN la tabla externa]
DE la mesa
El nombre de la nueva tabla no puede ser el mismo que el nombre de la tabla existente; de lo contrario, se producirá un error.
La nueva tabla creada por Select...Into tiene el mismo tipo de datos de campo y tamaño que la tabla consultada.
Veamos un ejemplo del uso de este comando SQL en un programa ASP.
Por ejemplo, el programa ASP rs9.asp es el siguiente, [Seleccionar * En computadora desde producto donde Tipo = 'Computadora'] generará una nueva tabla [Computadora] para todos los registros [Tipo] en la tabla [Producto] como [Computadora ]:
<%
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;"
sql = "Seleccione * en computadora desde producto donde categoría = 'Computadora'"
Establecer a = conn1.Execute(sql)
Establecer rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Seleccionar * desde la computadora"
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=CENTER><%= rs3("nombre en clave")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("nombre")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("precio")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("cantidad")%></TD>
</TR>
<%
rs3.MoverSiguiente
Bucle
rs3.Cerrar
%>
</TABLA>
El programa ASP rs9.asp anterior utiliza un navegador en el cliente para explorar los resultados de la ejecución y mostrar los registros de la nueva tabla [Computadora].