MySQL - subconsulta

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

subconsulta

Publicado por Alejandro (12 intervenciones) el 27/05/2020 11:59:01
Hola buenas,

vereis tengo esta consulta:

1
2
3
INSERT INTO tabla1 (año, total_anual, total_plurianual, fk_persona) VALUES
((SELECT año FROM tabla2 WHERE año=2012),
(SELECT SUM(cuantia) FROM tabla2 WHERE año=2012 AND fk_persona=1), (SELECT SUM(cuantia) FROM tabla2 WHERE fk_persona=1),1)

Y me da el siguiente error:

Subquery returns more than 1 row

pero si añado GROUP BY año al primer select me salta este error:

Column 'total_anual' cannot be null


Mi idea es que se registre en la tabla1 la suma del campo "cuantia" de la tabla2 segun el año en el campo "total_anual" y lo mismo pero de todos los años en el campo "total_plurianual" de la tabla1
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

subconsulta

Publicado por Francisco (73 intervenciones) el 28/05/2020 04:07:32
Hola

Tal vez funcione de esta manera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO
tabla1 (
		año,
		total_anual,
		total_plurianual,
		fk_persona
	)
VALUES
(
	(SELECT DISTINCT año FROM tabla2 WHERE año=2012),
	(SELECT SUM(cuantia) FROM tabla2 WHERE año=2012 AND fk_persona=1),
	(SELECT SUM(cuantia) FROM tabla2 WHERE fk_persona=1),
	1
);

o de esta otra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO
tabla1 (
		año,
		total_anual,
		total_plurianual,
		fk_persona
	)
VALUES
(
	2012,
	(SELECT SUM(cuantia) FROM tabla2 WHERE año=2012 AND fk_persona=1),
	(SELECT SUM(cuantia) FROM tabla2 WHERE fk_persona=1),
	1
);

Saludos
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
sin imagen de perfil
Val: 26
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

subconsulta

Publicado por Alejandro (12 intervenciones) el 28/05/2020 10:00:28
Gracias por la respuesta Francisco, me sigue diciendo que "total_anual" no puede ser nulo, en ambas
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
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

subconsulta

Publicado por Francisco (73 intervenciones) el 28/05/2020 13:14:27
Hola

Prueba con esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO
tabla1 (
		año,
		total_anual,
		total_plurianual,
		fk_persona
	)
VALUES
(
	(SELECT DISTINCT año FROM tabla2 WHERE año=2012),
	(SELECT COALESCE(SUM(cuantia), 0) FROM tabla2 WHERE año=2012 AND fk_persona=1),
	(SELECT COALESCE(SUM(cuantia), 0) FROM tabla2 WHERE fk_persona=1),
	1
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO
tabla1 (
		año,
		total_anual,
		total_plurianual,
		fk_persona
	)
VALUES
(
	2012,
	(SELECT COALESCE(SUM(cuantia), 0) FROM tabla2 WHERE año=2012 AND fk_persona=1),
	(SELECT COALESCE(SUM(cuantia), 0) FROM tabla2 WHERE fk_persona=1),
	1
);

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