Está en la página 1de 7

Access SQL: cláusula WHERE

Éste es uno de varios artículos acerca de Access SQL. Este


artículo describe cómo escribir una cláusula WHERE y brinda
ejemplos para demostrar las diferentes técnicas que puede usar en
una cláusula WHERE.

En una instrucción SQL, la cláusula WHERE especifica los


criterios que deben cumplir los valores de campo para los
registros que contienen los valores que se van a incluir en los
resultados de la consulta.

Para obtener información general sobre Access SQL, vea el


artículo Access SQL: conceptos básicos, vocabulario y sintaxis.
Para obtener más información acerca de otras partes de Access
SQL, consulte la sección Vea también.

En este artículo

Limitar los resultados mediante la especificación de criterios

Sintaxis de la cláusula WHERE

Usar la cláusula WHERE para combinar orígenes de datos

Limitar los resultados mediante la especificación de criterios

Cuando desea usar datos para limitar el número de registros que


se devuelven en una consulta, puede usar criterio. Un criterio de
consulta es similar a una fórmula,  se trata de una cadena que
puede constar de referencias de campo, operador y constante. Los
criterios de consulta son un tipo de expresión

clausula having sql


 La cláusula WHERE se aplica primero a las filas
individuales de las tablas u objetos con valores de tabla del
panel Diagrama. Solo se agrupan las filas que cumplen las
condiciones de la cláusula WHERE.
 La cláusula HAVING se aplica a continuación a las filas del
conjunto de resultados. Solo aparecen en el resultado de la
consulta los grupos que cumplen las condiciones
HAVING. Solo puede aplicar una cláusula HAVING a las
columnas que también aparecen en la cláusula GROUP BY
o en una función de agregado.
Imagine, por ejemplo, que va a combinar las
tablas titles y publishers para crear una consulta que muestre el
precio medio de los libros de un conjunto de editoriales. Solo
desea ver el precio medio de un conjunto específico de
editoriales: las del estado de California, por ejemplo. Y además,
solo quiere ver el precio medio si éste es superior a 10,00 USD.
Puede establecer la primera condición incluyendo una cláusula
WHERE, que descarta todas las editoriales que no están en
California, antes de calcular los precios medios. La segunda
condición requiere una cláusula HAVING, ya que se basa en los
resultados de la agrupación y del resumen de los datos. La
instrucción SQL resultante podría tener la forma siguiente:

SELECT titles.pub_id, AVG(titles.price)


FROM titles INNER JOIN publishers
ON titles.pub_id = publishers.pub_id
WHERE publishers.state = 'CA'
GROUP BY titles.pub_id
HAVING AVG(price) > 10
AVG (Transact-SQL)

Aplica la función de agregado a todos los valores. ALL es el


valor predeterminado.
DISTINCT
Especifica que AVG se ejecute solo en cada instancia única
de un valor, sin importar el número de veces que aparezca el
valor.
expression
Es una expresión de la categoría de tipo de datos numérico
exacto o aproximado, excepto para el tipo de datos bit. No
se permiten funciones de agregado ni subconsultas.
OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause divide el conjunto de resultados
generado por la cláusula FROM en particiones a las que se
aplica la función. Si no se especifica, la función trata todas
las filas del conjunto de resultados de la consulta como un
único grupo. order_by_clause determina el orden lógico en
el que se realiza la operación. order_by_clause es
obligatorio. Para obtener más información, vea OVER
(cláusula de Transact-SQL).
Tipos devueltos
El tipo de valor devuelto viene determinado por el tipo del
resultado evaluado de expression.
Resultado de la
Tipo de valor devuelto
expresión

tinyint int

smallint int

int int

bigint bigint

Categoría decimal (p, s) decimal(38, s) dividido


por decimal(10, 0)

Categoría money y small money
money

Categoría float y real float
COUNT (Transact-SQL)

Devuelve el número de elementos de un grupo. COUNT funciona


como la función COUNT_BIG. La única diferencia entre ambas
funciones está en los valores devueltos. COUNT siempre
devuelve un valor de tipo de datos int. COUNT_BIG siempre
devuelve un valor de tipo de datos bigint.
Convenciones de sintaxis de Transact-SQL
Sintaxis
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
OVER ( [ partition_by_clause ] order_by_clause )
Argumentos
ALL
Aplica la función de agregado a todos los valores. ALL es el
valor predeterminado.
DISTINCT
Especifica que COUNT devuelva el número de valores
únicos no NULL.
expression
Es una expression de cualquier tipo
excepto text, image o ntext. No se permite utilizar
funciones de agregado ni subconsultas.
*
Especifica que se deben contar todas las filas para devolver
el número total de filas de una tabla. COUNT(*) no acepta
parámetros y no se puede utilizar con
DISTINCT. COUNT(*) no requiere un
parámetro expression porque, por definición, no utiliza
información sobre ninguna columna específica. COUNT(*)
devuelve el número de filas de una tabla especificada sin
deshacerse de las duplicadas. Cuenta cada fila por
separado. Esto incluye las filas que contienen valores
NULL.
ALL en SQL

Si hay alguna silla en la columna Antigüedades, la subconsulta


devolverá una o varias filas, haciendo la cláusula EXISTS
verdadera, haciendo que SQL liste los antigüos propietarios. Si no
ha habido sillas, ninguna fila será devuelta por la subconsulta.

ALL es otra construcción poco usual , como las consultas ALL


pueden ser usadas con diferentes y simples métodos, veamos un
ejemplo de consulta:

SELECT ID_COMPRADOR, PRODUCTO 


FROM ANTIGÜEDADES 
WHERE PRECIO = ALL 
    (SELECT PRECIO 
     FROM ANTIGÜEDADES);

Esto devolverá el precio de producto más alto (o más de un


producto si hay un empate), y su comprador. La subconsulta
devuelve una lista de todos los precios de la tabla Antigüedades, y
la consulta de salida va fila por fila de la tabla Antigüedades y si
el precio es mayor o igual a todos (o ALL) precios en la lista, es
listado, dando el precio del producto más caro. La razón de "=" es
que el mayor precio en la lista puede ser igual al de la lista, ya que
este producto está en la lista de precios.

EXISTS (Transact-SQL)

A.Utilizar NULL en una subconsulta para seguir devolviendo un


conjunto de resultados
En el ejemplo siguiente se devuelve un conjunto de resultados
con NULL especificado en la subconsulta, que se sigue evaluando
como TRUE al utilizar EXISTS.
USE AdventureWorks2012 ;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE EXISTS (SELECT NULL)
ORDER BY Name ASC ;
B.Comparar consultas mediante EXISTS e IN
En el ejemplo siguiente se comparan dos consultas que son
semánticamente equivalentes. En la primera consulta se
utiliza EXISTS y en la segundaIN.
USE AdventureWorks2012 ;
GO
SELECT a.FirstName, a.LastName
FROM Person.Person AS a
WHERE EXISTS
(SELECT *
FROM HumanResources.Employee AS b
WHERE a.BusinessEntityID = b.BusinessEntityID
AND a.LastName = 'Johnson');
GO
En la siguiente consulta se usa IN.
USE AdventureWorks2012 ;
GO
SELECT a.FirstName, a.LastName
FROM Person.Person AS a
WHERE a.LastName IN
(SELECT a.LastName
FROM HumanResources.Employee AS b
WHERE a.BusinessEntityID = b.BusinessEntityID
AND a.LastName = 'Johnson');
GO
Este es el conjunto de resultados de las consultas.
FirstName LastName
-------------------------------------------------- ----------
Barry Johnson
David Johnson
Willis Johnson
(3 row(s) affected)
.

También podría gustarte