En SQL, para extraer datos valiosos, necesitamos realizar una autounión dentro de la misma tabla. La autounión es un simple producto cruzado seguido de una condición. Una ilustración de la misma se muestra en el siguiente artículo. Para este artículo, utilizaremos Microsoft SQL Server como nuestra base de datos.
Paso 1: crear una base de datos. Para esto, use el siguiente comando para crear una base de datos llamada GeeksForGeeks.
Consulta:
CREATE DATABASE GeeksForGeeks
Producción:
Paso 2: use la base de datos GeeksForGeeks. Para esto, use el siguiente comando.
Consulta:
USE GeeksForGeeks
Producción:
Paso 3: Crear una tabla CORPORATIVA dentro de la base de datos GeeksForGeeks. Esta tabla tiene 4 columnas, a saber, E_NAME, E_ID, E_DEPT y E_LOC que contienen el nombre, la identificación, el departamento y la ubicación de varios empleados.
Consulta:
CREATE TABLE CORPORATE( E_NAME VARCHAR(10), E_ID INT, E_DEPT VARCHAR(10), E_LOC VARCHAR(10));
Producción:
Paso 4: Describa la estructura de la tabla CORPORATIVA.
Consulta:
EXEC SP_COLUMNS CORPORATE;
Producción:
Paso 5: Inserte 5 filas en la tabla CORPORATIVA.
Consulta:
INSERT INTO CORPORATE VALUES('RAM',1,'HR','DELHI'); INSERT INTO CORPORATE VALUES('RAM',1,'SALES','DELHI'); INSERT INTO CORPORATE VALUES('VARUN',2,'IT','BANGALORE'); INSERT INTO CORPORATE VALUES('VARUN',2,'MARKETING','HYDERABAD'); INSERT INTO CORPORATE VALUES('RAVI',3,'FINANCE','KOCHI'); INSERT INTO CORPORATE VALUES('RAVI',3,'FINANCE','TRIVANDRUM');
Producción:
Paso 6: Muestre todas las filas de la tabla CORPORATIVA.
Consulta:
SELECT * FROM CORPORATE;
Producción:
Paso 7: Recupere los detalles de todos los empleados que hayan trabajado en al menos 2 departamentos y al menos 2 ubicaciones.
Nota: Uso de AS para hacer 2 alias de la tabla CORPORATIVO con C1 y C2 para comparar los ID, departamentos y ubicaciones de los empleados.
Consulta:
SELECT C1.E_NAME,C1.E_ID,C1.E_DEPT,C1.E_LOC FROM CORPORATE AS C1,CORPORATE AS C2 WHERE C1.E_ID=C2.E_ID AND C1.E_DEPT<>C2.E_DEPT AND C1.E_LOC<>C2.E_LOC;
Producción:
Nota: Aquí no se muestra la memoria RAM aunque ha trabajado en 2 departamentos diferentes ya que su ubicación era la misma. De manera similar, RAVI no se muestra aunque ha trabajado en 2 lugares diferentes ya que su departamento era el mismo.
Paso 8: para mostrar solo los nombres de los empleados que han trabajado en al menos 2 departamentos y al menos 2 ubicaciones, use SELECCIONAR solo para la columna E_NAME y mantenga DISTINCT para evitar filas redundantes.
Consulta:
SELECT DISTINCT(C1.E_NAME) FROM CORPORATE AS C1,CORPORATE AS C2 WHERE C1.E_ID=C2.E_ID AND C1.E_DEPT<>C2.E_DEPT AND C1.E_LOC<>C2.E_LOC;
Producción:
Publicación traducida automáticamente
Artículo escrito por abhisri459 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA