Está en la página 1de 3

CREATE TABLE nombres (

ID_NOMBRE int,
NOMBRE char(20)
);

CREATE TABLE logros (


ID int,
ID_NOMBRE int,
DESCRIPCION char(50)
);

CREATE TABLE logros2 (


ID int,
ID_NOMBRE int,
DESCRIPCION char(50)
);

INSERT INTO nombres VALUES


(1,'Cristiano'),
(2,'Xavi'),
(3,'Messi'),
(4,'Dani Alves');

INSERT INTO logros VALUES


(1,1,'50 goles'),
(2,2,'30 Asistencias'),
(3,3,'30 Títulos'),
(4,3,'MVP'),
(5,'','Pichichi');

INSERT INTO logros2 VALUES


(1,1,'50 Asistencias'),
(2,2,'100 Goles'),
(3,3,'50 títulos'),
(4,3,'3 MVP'),
(5,'','4 Pichichis');

-- INNER JOIN --
SELECT nombres.NOMBRE, logros.DESCRIPCION
FROM nombres INNER JOIN logros ON nombres.ID_NOMBRE = logros.ID_NOMBRE

--- LEFT JOIN ---


SELECT nombres.NOMBRE, logros.DESCRIPCION
FROM nombres LEFT JOIN logros ON nombres.ID_NOMBRE = logros.ID_NOMBRE

--- RIGHT JOIN ---


SELECT nombres.NOMBRE, logros.DESCRIPCION
FROM nombres RIGHT JOIN logros ON nombres.ID_NOMBRE = logros.ID_NOMBRE

USE CODER
-- Outer Join ---
SELECT nombres.NOMBRE, logros.DESCRIPCION
FROM nombres FULL OUTER JOIN logros ON nombres.ID_NOMBRE = logros.ID_NOMBRE

-- UNION --
SELECT * FROM logros
UNION
SELECT * FROM logros2

USE CoderHouse
select * FROM Staff FULL OUTER JOIN Encargado ON Staff.Encargado =
Encargado.Encargado_ID
WHERE DocentesID is null

SELECT * FROM
Staff LEFT JOIN Asignaturas ON Staff.Asignatura = Asignaturas.AsignaturasID
LEFT JOIN Area ON Asignaturas.Area = Area.AreaID

USE CoderHouse
-- EJERCICIO 1 ------------------------------------------------------------------------------
-- Indicar por jornada la cantidad de docentes que dictan y sumar los costos.
-- Esta información solo se desea visualizar para las asignaturas de desarrollo web. FILTRO
WEB
-- El resultado debe contener todos los valores registrados en la primera tabla, Renombrar
-- la columna del calculo de la cantidad de docentes como cant_docentes y la columna de la
suma
-- de los costos como suma_total. Keywords: Asignaturas,Staff, DocentesID, Jornada, Nombre,
costo.

SELECT Asignaturas.Jornada, COUNT(DocentesID) as cant_docentes,


SUM(Asignaturas.Costo) as suma_total FROM
Staff LEFT JOIN Asignaturas ON Staff.Asignatura = Asignaturas.AsignaturasID
WHERE Asignaturas.Nombre = 'Desarrollo Web' GROUP BY Asignaturas.Jornada
-- EJERCICIO 2 ------------------------------------------------------------------------------
-- Se requiere saber el id del encargado, el nombre, el apellido y cuantos son los docentes que
tiene asignados
-- cada encargado. Luego filtrar los encargados que tienen como resultado 0 ya que son los
encargados que NO
-- tienen asignado un docente. Renombrar el campo de la operación como Cant_Docentes.
Keywords: Docentes_id,

-- Encargado, Staff, Nombre, Apellido,Encargado_ID.

-- nombre y apellido del encargado y cuantos docentes tiene asignados y ponerle


Cant_Docentes
-- Después filtrar aquellos con 0 Docentes asignados

SELECT Encargado.Encargado_ID, min(Encargado.Nombre) as Nombre,


min(Encargado.Apellido) as Apellido, COUNT(Staff.DocentesID) as Cant_Docentes
FROM Encargado LEFT JOIN Staff ON Encargado.Encargado_ID = Staff.Encargado
GROUP BY Encargado.Encargado_ID

SELECT Encargado.Encargado_ID, Encargado.Nombre, Encargado.Apellido,


COUNT(Staff.DocentesID) as Cant_Docentes
FROM Encargado LEFT JOIN Staff ON Encargado.Encargado_ID = Staff.Encargado
GROUP BY Encargado.Encargado_ID,Encargado.Nombre,Encargado.Apellido HAVING
COUNT(Staff.DocentesID) > 0

-- Se requiere saber todos los datos de asignaturas que no tienen un docente asignado.
-- El modelo de la consulta debe partir desde la tabla docentes. Keywords: Staff, Encargado,
Asignaturas,
-- costo, Area.

SELECT Asignaturas.*
FROM Staff RIGHT JOIN Asignaturas ON Staff.Asignatura = Asignaturas.AsignaturasID
WHERE Staff.DocentesID is null

SELECT *
FROM Staff RIGHT JOIN Asignaturas ON Staff.Asignatura = Asignaturas.AsignaturasID
WHERE Staff.DocentesID is null

También podría gustarte