Cómo realizar búsquedas de registros duplicados y qué es y cómo se hace un procedure en SQL.
Clausula Procedure
Esta cláusula es poco usual y se utiliza para crear una consulta a la misma vez que se ejecuta, opcionalmente define los parámetros de la misma. Su sintaxis es la siguiente:
PROCEDURE NombreConsulta Parámetro1 tipo1, .... ,
ParámetroN tipon ConsultaSQL
En donde:
NombreConsulta | Es el nombre con se guardará la consulta en la base de datos. |
Parámetro | Es el nombre de parámetro o de los parámetros de dicha consulta. |
tipo | Es el tipo de datos del parámetro |
ConsultaSQL | Es la consulta que se desea grabar y ejecutar. |
PROCEDURE
ListaCategorias;
SELECT DISTINCTROW
NombreCategoria, IdCategoria
FROM
Categorias
ORDER BY
NombreCategoria
(Asigna el nombre Lista_de_categorías a la consulta y la ejecuta.)
PROCEDURE
Resumen
FechaInicio DATETIME,
FechaFinal DATETIME;
SELECT DISTINCTROW
FechaEnvio, IdPedido, ImportePedido, Format(FechaEnvio, "yyyy") AS Año
FROM
Pedidos
WHERE
FechaEnvio Between FechaInicio And FechaFinal
(Asigna el nombre Resumen a la consulta e incluye dos parámetros.)
Búsqueda de Registros Duplicados
Para generar este tipo de consultas lo más sencillo es utilizar el asistente de consultas de Access, editar la sentencia SQL de la consulta y pegarla en nuestro código. No obstante este tipo de consulta se consigue de la siguiente forma:
SELECT DISTINCT Lista de Campos a Visualizar FROM Tabla
WHERE CampoDeBusqueda In
(SELECT CampoDeBusqueda FROM Tabla As psudónimo
GROUP BY CampoDeBusqueda HAVING Count(*) > 1 )
ORDER BY CampoDeBusqueda
Un caso práctico, si deseamos localizar aquellos empleados con igual nombre y visualizar su código correspondiente, la consulta sería la siguiente:
SELECT DISTINCT
Empleados.Nombre, Empleados.IdEmpleado
FROM
Empleados
WHERE
Empleados.Nombre
In (
SELECT Nombre FROM Empleados As Tmp GROUP BY Nombre HAVING Count(*) > 1)
ORDER BY
Empleados.Nombre
Claudio