0 votos

SQL - Crear vista con datos de dos tablas

A ver si alguien me puede ayudar. necesito generar una vista cruzando datos de dos tablas.

SQL crear tablas:

CREATE TABLE `departamentos` (
  `dept_no` int(12) NOT NULL,
  `dnombre` varchar(20) NOT NULL,
  `loc` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `profesores` (
  `NRP` int(12) NOT NULL,
  `nombre` varchar(15) NOT NULL,
  `apellidos` varchar(40) NOT NULL,
  `email` varchar(50) NOT NULL,
  `fecha_alta` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dept_no` int(12) NOT NULL,
  `salario` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Aquí unas inserts de prueba:

INSERT INTO `departamentos` (`dept_no`, `dnombre`, `loc`) VALUES
  (10, 'INFORMATICA', 'DESPA6'),
  (20, 'COMERCIO', 'DESPA7'),
  (30, 'ADMINISTRATIVO', 'DESPA8'),
  (40, 'FOL', 'DESPA5'),
  (50, 'GEO', 'DESPA2'),
  (60, 'DW', 'DESPA3');
INSERT INTO `profesores` (`NRP`, `nombre`, `apellidos`, `email`, `fecha_alta`, `dept_no`, `salario`) VALUES
  (1, 'Luz', 'Pex', 'luz.p@mail.org', '1990-01-01 00:00:00', 10, 1050),
  (2, 'Cris', 'Picco', 'cpic@mail.org', '1990-02-01 00:00:00', 10, 1150),
  (3, 'Imma', 'Saez', 'i.saez@mail.org', '1990-03-01 00:00:00', 10, 1050),
  (4, 'María', 'Sánchez', 'm.sanchez@mail.org', '2016-09-22 18:26:59', 40, 1000),
  (5, 'Luis', 'Caracol', 'lc@center.ol', '2016-10-21 22:11:24', 10, 1050),
  (6, 'Isma', 'Serra i Fabra', 'isma@mail.es', '2016-10-21 22:11:24', 20, 1000),
  (8, 'Luis', 'Del Orujo', 'lcar@center.ol', '2016-10-21 22:16:44', 10, 1090),
  (9, 'Isma', 'Serrara', 'ismalion@mail.es', '2016-10-21 22:16:44', 20, 980);

Problema: Crear una vista que obtenga para cada departamento su localización y cuántos profesores tiene, con el sueldo medio de los mismos

0voto

Ivan Muñoz Puntos1120

Moises, nesecitas hacer un inner join entre las tablas y de ahi contar los profesores con la funcion count() y obtener el promedio con la funcion avg() :

CREATE OR REPLACE VIEW Detalles_de_departamentos AS SELECT d.dnombre 'Departamento', d.loc 'Localización', COUNT(p.NRP) 'Profesores', AVG(p.salario) 'Sueldo medio'  FROM profesores AS p INNER JOIN departamentos AS d ON d.dept_no = p.dept_no GROUP BY d.dept_no

0 votos

Perfecto. Gracias.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: