Aprende a Eliminar los Registros Repetidos usando DISTINCT

Aprender a usar la cláusula DISTINCT te permitirá controlar los registros que estén repetidos en las consultas que realices a tu Base de Datos, ya que suele ocurrir que el id de una tabla padre se encuentre más de una vez en otra tabla hija, pero como resultado solo queremos mostrar los datos de la tabla padre.

Antes de tomar la decisión de usar la cláusula DISTINCT debes revisar muy bien tu query para determinar que los registros duplicados no se deban a que te falte o tengas mal construido un UNION en tu consulta lo que también suele ocurrir.

Revisemos un ejemplo práctico para entender mejor esta cláusula:

Ejemplo #1: Supongamos que tienes una query de dos tablas enlazadas entre sí por su campo clave, pero al ejecutar la query entrega filas duplicadas y solo se quiere que se muestren filas únicas, veamos cómo se hace:

Select dep.codigo_dep, dep.nombre_dep

From t_empleado emp, t_departamento dep

Where emp.id_departamento = dep.id_departamento

And emp.ind_estado = 1 — 1=activo

Order by dep.nombre_dep;

Esta query permite listar todos los departamentos que tienen empleados activos ordenados por el nombre del departamento,  pero si los departamentos tienen más de un empleado los departamentos se listarán duplicados o se repetirán por cada empleado activo del departamento, quedando el listado asi:

20 ADQUISICIONES

20 ADQUISICIONES

08 CONTABILIDAD

22 FINANZAS

15 INFORMATICA

15 INFORMATICA

15 INFORMATICA

15 INFORMATICA

35 RECURSOS HUMANOS

35 RECURSOS HUMANOS

35 RECURSOS HUMANOS

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”  ¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Los departamentos de Adquisiciones, Informática y Recursos Humanos se muestran repetidos por cada empleado activo que tiene cada uno, para solucionar este problema podemos echar mano de la cláusula DISTINCT de la siguiente manera:

Select DISTINCT dep.codigo_dep, dep.nombre_dep

From t_empleado emp, t_departamento dep

Where emp.id_departamento = dep.id_departamento

And emp.ind_estado = 1 – 1=activo

Order by dep.nombre_dep;

Incluyendo la cláusula DISTINCT en la query eliminamos todos los registros que estén repetidos en el resultado, quedando el listado asi:

20 ADQUISICIONES

08 CONTABILIDAD

22 FINANZAS

15 INFORMATICA

35 RECURSOS HUMANOS

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de Packages en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con Packages en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en 7 Pasos

Esta entrada fue publicada en Function en Oracle, Packages en Oracle, Procedures en Oracle y etiquetada , , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s