Página
A-7
Computación en Acción, S.A. de C.V.
Derechos Reservados®
Sentencias básicas en SQL para reportes
Sentencias básicas,
Continuación
HAVING
Esta instrucción especifica una condición de búsqueda para un grupo o agregado y solo se
puede utilizar junto con
SELECT
.
Sintaxis
:
SELECT
campo
HAVING
campo
Normalmente, el
HAVING
se utiliza dentro de una cláusula
GROUP BY
. Cuando no se utiliza
dentro de esta cláusula, el
HAVING
se comporta como una cláusula
WHERE
.
La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la
tabla
Documentos
. Y solo muestra aquellos clientes cuya suma de TODOS sus documentos
sea mayor a 2000.
SELECT
CIDCLIENTEPROVEEDOR
,
SUM
(
CTOTAL
)
FROM
admDocumentos
GROUP
BY
CIDCLIENTEPROVEEDOR
HAVING
SUM
(
CTOTAL
)>
2000
WHERE
La siguiente consulta agrupa la suma de todos los documentos de un mismo cliente de la
tabla
Documentos
. Y solo agrupa aquellos documentos cuyo Total sea mayor a 2000.
SELECT
CIDCLIENTEPROVEEDOR
,
SUM
(
CTOTAL
)
AS
TotalDoc
FROM
admDocumentos
WHERE
CTOTAL
>
2000
GROUP
BY
CIDCLIENTEPROVEEDOR
JOINS
Las sentencias
JOIN
permiten combinar registros de dos o más tablas. Existen varios tipos de
JOIN, dentro de los más utilizados están:
INNER JOIN
o
JOIN.
Selecciona todos los registros de ambas tablas siempre y
cuando haya coincidencias en ambas tablas.
LEFT JOIN.
Regresa todos los registros de la tabla de la izquierda que coincidan
con los registros de la tabla derecha. El resultado es NULL del lado derecho cuando
no haya coincidencia.
INNER JOIN
La siguiente consulta muestra todos los documentos con sus movimientos a través de la
unión de la tabla Documentos y Movimientos tomando el campo común
CIDDOCUMENTO
ubicado en ambas tablas.
SELECT
*
FROM
admDocumentos D
INNER
JOIN
admMovimientos M
ON
D
.
CIDDOCUMENTO
=
M
.
CIDDOCUMENTO
LEFT JOIN
La siguiente consulta muestra todos los documentos aun si no tienen movimientos.
SELECT
*
FROM
admDocumentos D
LEFT
JOIN
admMovimientos M
ON
D
.
CIDDOCUMENTO
=
M
.
CIDDOCUMENTO
Continúa en la siguiente página
1...,79,80,81,82,83,84,85,86,87,88 90,91,92,93,94,95,96,97,98,99,...108