MySQL - El VIEW me ha vuelto loco

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 9 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

El VIEW me ha vuelto loco

Publicado por gonso (2 intervenciones) el 01/11/2019 10:56:41
Buenas, comunidad.

Un saludo a todos, acabo de aterrizar por aquí, y he visto que ayudáis a mucha gente.

Estoy desesperado, tengo que entregar un ejercicio y me falta el final…no soy capaz de dar con la tecla. Os agradecería que me echaseis un cable.Muchas gracias de antemano.

• Me piden una vista (VIEW) resumen con información del número de alumnos y profesores para cada centro.


Las tres tablas tienen estos datos.

La clave primaria de la tabla `centro` es el atributo `nombre`

En las tablas `profesores` y `alumnos` se establece como clave foránea `centro` del atributo `nombre` de la tabla `centro`

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
CREATE TABLE `centro` (
  `NOMBRE` varchar(70) COLLATE utf8_spanish_ci NOT NULL,
  `DIRECCION` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
  `LOCALIDAD` varchar(70) COLLATE utf8_spanish_ci NOT NULL,
  `CIUDAD` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
  `TELEFONO` int(15) NOT NULL,
  `CORREO` varchar(50) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
 
INSERT INTO `centro` (`NOMBRE`, `DIRECCION`, `LOCALIDAD`, `CIUDAD`, `TELEFONO`, `CORREO`) VALUES
('Bandama', 'C/ Brasil n4', 'Vecindario', 'Vecindario', 922343434, 'ban@hotmail.com'),
('Lomo Magullo', 'C/ Jose Velez 9', 'Telde', 'Las Pamas', 928565656, 'lm@hotmail.com'),
('Santa Brigida', 'C/ Los Frailes sn', 'Las Palmas', 'Las Palmas', 928685056, 'sb@hotmail.com');
------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE `profesores` (
  `dni` varchar(9) COLLATE utf8_spanish_ci NOT NULL,
  `nombre` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `primer apellido` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `segundo apellido` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `centro` varchar(70) COLLATE utf8_spanish_ci NOT NULL,
  `telefono` int(11) NOT NULL,
  `email` varchar(80) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
 
INSERT INTO `profesores` (`dni`, `nombre`, `primer apellido`, `segundo apellido`, `centro`, `telefono`, `email`) VALUES
('12322333a', 'Lucas', 'Martin', 'Pery', 'Bandama', 453657687, 'lmp@hotmail.com'),
('56777888v', 'Guido', 'Pascon', 'Las', 'Santa Brigida', 456789009, 'gpl@hotmail.com'),
('65655111g', 'Perfecto', 'Sanchez', 'Sanchez', 'Lomo Magullo', 767888666, 'pss@gmail.com'),
('98987987s', 'Lorenzo', 'Martin', 'Luque', 'Bandama', 567656543, 'lml@hotmail.com');
 
CREATE TABLE `alumnos` (
  `dni` varchar(9) COLLATE utf8_spanish_ci NOT NULL,
  `nombre` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `primer apellido` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `segundo apellido` varchar(80) COLLATE utf8_spanish_ci NOT NULL,
  `centro` varchar(70) COLLATE utf8_spanish_ci NOT NULL,
  `telefono` int(11) NOT NULL,
  `email` varchar(80) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
 
INSERT INTO `alumnos` (`dni`, `nombre`, `primer apellido`, `segundo apellido`, `centro`, `telefono`, `email`) VALUES
('33456456y', 'Perico', 'Cachorro', 'Nuevo', 'Bandama', 656787898, 'pcn@hotmail.com'),
('45567789u', 'Juan', 'Deker', 'Montero', 'Lomo Magullo', 456234346, 'jdm@hotmail.com'),
('55565677', 'Guillermo', 'Santana', 'Santana', 'Lomo Magullo', 567565678, 'gss@hotmail.com'),
('67000456f', 'Alfonso', 'Lalin', 'Soto', 'Santa Brigida', 876543211, 'als@gmail.com');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

El VIEW me ha vuelto loco

Publicado por Francisco (73 intervenciones) el 01/11/2019 13:09:33
Hola

La solucion

1
2
3
4
5
SELECT
	nombre AS centro,
    (SELECT COUNT(*) FROM alumnos AS a WHERE a.centro = c.nombre) AS total_alumnos,
    (SELECT COUNT(*) FROM profesores AS p WHERE p.centro = c.nombre) AS total_profesores
FROM CENTRO AS C

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 9 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

El VIEW me ha vuelto loco

Publicado por gonso (2 intervenciones) el 01/11/2019 16:09:25
Francisco....espectacular,ha salido perfecto.

Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar