> Manuales > Tutorial de SQL

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:

NombreConsultaEs el nombre con se guardará la consulta en la base de datos.
ParámetroEs el nombre de parámetro o de los parámetros de dicha consulta.
tipoEs el tipo de datos del parámetro
ConsultaSQLEs 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

Manual