lunes, 23 de junio de 2014

Aprende acerca de las clausulas avanzadas de selección

Seguimos con las clausulas avanzadas, esta vez pasamos a explicar el outer join, unión, intersect y minus.


Para comenzar os comento un poco que en artículos anteriores hemos hablado de la combinación de tablas, concepto que vamos a necesitar tener bastante claro para poder entender el resto de clausulas avanzadas de selección. 


Combinación externa (outer join) 

Esta clausula nos permite seleccionar filas de una tabla aunque no tengan correspondencia con flas de la otra tabla con la que se la combina. 

Su formato es el siguiente: 

select tabla1.columna1, tabla1.columna2, tabla2.columna2
from tabla1, tabla2
where tabla1.columna1=tabla2.columna1;

Como veis es bastante fácil y no crea mayor duda. Los registros que no tengan correspondencia con la otra tabla no aparecerán. Para que aparezcan tendremos que colocar el símbolo (+) al final del where y la columna que queremos que aparezca. 

Un ejemplo de select seria el siguiente: 

select departamento.num, departamento.nombre, emple.nombre
from departamento, nombre
where departamento.num=emple.num;

Aquí agrupamos por el num del departamento que se encuentra en las dos tablas. 


Operador unión 
Este operador combina los resultados de dos columnas. Si existe alguna fila duplicada solo aparece una en el resultado. 

Su formato es el siguiente: 

select col1, col2, ... from tabla1 where condición

union
select col1, col2, ... from tabla2 where condición;


Si queremos que nos aparezcan también las filas duplicadas tenemos que utilizar el operador unión all 


Por ejemplo si quisiéramos mostrar todos los trabajadores de una empresa, tanto los nuevos como los dados de baja tendríamos que hacer una sentencia como esta: 


select nombre from trabajadores_nuevos

union
select nombre from trabajadores_viejos;


Operador intersect 


Este operador nos devuelve las filas que son iguales en ambas consultas. Como en el anterior por defecto las filas duplicadas se eliminan y no se muestran en el resultado. 


Su formato es el siguiente: 

select col1, col2, ... from tabla1 where condición

intersect
select col1, col2, ... from tabla2 where condición;


Un ejemplo muy sencillo seria mostrar los alumnos que todavía están estudiando. 


select nombre from alumnos_activos

intersect
select nombre from alumnos;


Operador minus 



El operador minus nos devuelve las flas que están en la primera select y no en la segunda. Como en los casos anteriores las filas duplicadas no se muestran en el resultado. 


Su formato es: 
select col1, col2, ... from tabla1 where condición
minus
select col1, col2, ... from tabla2 where condición;


Un ejemplo para este operador seria mostrar los alumnos que no están en actives 


select nombre from alumnos

minus
select nombre from alumnos_activos;


Para finalizar os comento que estos tres últimos operadores los podemos encadenar, teniendo en cuenta que siempre se evalúan de izquierda a derecha. 


Además es importante saber que si vas a realizar este tipo de consultas siempre tiene que haber el mismo número de columnas en las dos select y que los tipos de datos deben coincidir.

Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros cursos de Programación visita www.uneweb.com para más información.

No hay comentarios:

Publicar un comentario

Entradas populares