Usando la sintaxis SELECT cuatro en ADO
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:54:28
TENIENDO
HAVING se utiliza en expresiones SELECT para filtrar registros que han sido contados por GROUP BY. Después de que GROUP BY cuente los registros, HAVING filtrará los registros que coincidan con las condiciones de la cláusula HAVING.
La sintaxis es la siguiente:
SELECCIONAR lista de campos
DE la mesa
DONDE seleccionar criterios
GRUPO POR lista de campos de grupo
[TENIENDO criterios de grupo]
.groupcriteria indica los registros estadísticos que determinan cuáles deben filtrarse.
TENER es similar a DONDE y se utiliza para decidir qué registros seleccionar. Cuando se utiliza GROUP BY para contar registros, HAVING determinará los registros que deben mostrarse, por ejemplo:
SELECCIONAR nombre del producto
DE productos
GRUPO POR Categoría
TENIENDO precio unitario > 1000
Una cláusula HAVING puede contener hasta 40 expresiones operativas, y las expresiones operativas estarán conectadas mediante operadores lógicos como AND u OR.
Veamos un ejemplo del uso de este comando SQL en un programa ASP.
Podemos usar la cláusula HAVING para determinar los registros que deben mostrarse. Por ejemplo, el programa ASP rs23.asp es el siguiente, [SELECT Name, Asunto, Promedio (puntuación) como promedio del grupo de exámenes por nombre, Asunto que tiene promedio (. Puntuación) >=60], utilice Tener Promedio(puntuación) >=60 Encuentre registros con una puntuación promedio mayor o igual a 60 puntos:
<%
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, promedio (puntuación) como promedio del grupo de examen por nombre, materia con promedio (puntuación) >=60"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Tener promedio (puntuación) >=60"
Hacer mientras no rs2.EOF
Respuesta.Escribir "<BR>" & rs2("Nombre") & " " & rs2("Asunto") & " Promedio: " & rs2("Promedio")
rs2.MoverSiguiente
Bucle
rs2.Cerrar
%>
El programa ASP anterior rs23.asp utiliza un navegador en el cliente para explorar los resultados de la ejecución y mostrar los registros cuya puntuación promedio es mayor o igual a 60 puntos.
También podemos usar la cláusula HAVING para buscar registros duplicados. Por ejemplo, el programa ASP rs23.asp es el siguiente, [SELECCIONAR código del grupo de productos por código que tiene recuento (código) > 1], use Tener recuento (código) > 1. para encontrar códigos duplicados Registros:
<%
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 el código del grupo de productos por código que tenga recuento (código) > 1"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Buscar duplicados con recuento (código) > 1"
Hacer mientras no rs2.EOF
Respuesta.Escribir "<BR>" & rs2("nombre en clave")
rs2.MoverSiguiente
Bucle
rs2.Cerrar
%>
Para el programa ASP rs23.asp anterior, utilice un navegador en el lado del cliente para examinar los resultados de la ejecución y mostrar registros con nombres de código duplicados.
Unión
Union puede combinar los resultados de múltiples conjuntos de consultas.
La sintaxis es la siguiente:
Consulta 1 UNION [TODOS] Consulta 2 [UNION [TODOS] Consulta 3 [ ... ]]
La consulta es una expresión SELECT.
Cuando utiliza una operación UNION, no se devolverán registros duplicados; si desea devolver todos los registros, puede agregar TODOS después de UNION. Agregar TODO ejecutará la consulta más rápido.
Todas las consultas en una operación UNION deben tener la misma cantidad de campos. Los tamaños de campo pueden ser diferentes y los tipos de datos de campo también pueden ser diferentes.
Los alias sólo se pueden utilizar en la primera expresión SELECT y se omiten en otras expresiones SELECT.
Puede utilizar la cláusula GROUP BY o HAVING en cada expresión SELECT para contar los resultados de la consulta.
Puede utilizar la cláusula ORDER BY en la última expresión SELECT para especificar el orden en el que se ordenan los resultados de la consulta.
Veamos un ejemplo del uso de este comando SQL en un programa ASP.
Union se puede utilizar para fusionar los resultados de dos conjuntos de consultas. Por ejemplo, el programa ASP rs25.asp es el siguiente, [(SELECT nombre, materia, puntuación del examen Donde materia='aritmética' y nombre='Li Si'. ) Unión (SELECT nombre, materia, puntuación) Del examen Donde materia = 'aritmética' y nombre = 'Zhang San')], use Unión para fusionar los resultados de dos conjuntos de consultas SELECT, un grupo es para consultar los registros de puntuación aritmética de Li Si, y el otro es consultar los registros de puntuació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 nombre = 'Li Si') Unión (SELECCIONE nombre, materia, puntuación del examen Donde materia = 'aritmética' y nombre = 'Zhang San') "
rs2.Open SqlStr,conn1,1,1
Respuesta.Escribe "<p>Unión"
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 rs25.asp utiliza un navegador en el cliente para explorar los resultados de la ejecución y mostrar los registros de fracciones aritméticas de John Doe y John Doe.