SQL - insertar datos de columas calculadas

 
Vista:
sin imagen de perfil

insertar datos de columas calculadas

Publicado por juan carlos (2 intervenciones) el 01/02/2015 15:50:02
hola, tengo una duda:

yo tengo una base de datos y quiero que el campo de una una tabla sea el resultado de la suma de tres campos de otra tabla. He intentado esta solucion pero no me ha funcionado:

update tabla1 add column columa1 (select sum1+sum2+sum3);
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

insertar datos de columas calculadas

Publicado por leonardo_josue (1173 intervenciones) el 03/02/2015 15:56:41
Hola Juan Carlos:

Dos cosas.

1. Una columna calculada POR NINGÚN MOTIVO DE EXISTIR EN UNA TABLA. esto es un error de diseño y va en contra de la normalización de Bases de Datos.

2. ¿De qué libro/manual estás tomando la sintaxis para el UPDATE? no nos dices con qué Base de datos estás trabajando, pero en ninguna que se base en SQL, lo que haces funcionará ni remotamente. Estás mezclando conceptos de ALTER TABLE con UPDATE, te recomiendo que leas detenidamente el manual de referencia o le preguntes a SAN GOOGLE, él siempre tiene la respuesta.

Saludos
Leo.
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

insertar datos de columas calculadas

Publicado por juan carlos (1 intervención) el 03/02/2015 16:06:05
Es mysql version 5.5 la base de datos esta en fn3. E optado por un update para actualizar el campo creado anteriormente.
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

insertar datos de columas calculadas

Publicado por leonardo_josue (1173 intervenciones) el 03/02/2015 19:29:05
Hola de nuevo Juan Carlos:

Creo que estás confundiendo y mezclando conceptos, como te lo mencioné, pues estás tratando de hacer cosas que con MySql simplemente no existen.

Vayamos por partes.

Si pretendes MODIFICAR UNA COLUMNA EXISTENTE en una tabla, NO UTILIZAS UPDATE, utilizas el comando ALTER TABLE y el atributo MODIFY. Checa (como te pedí en el post anterior) la documentación oficial de MySQL:

http://dev.mysql.com/doc/refman/5.5/en/alter-table-examples.html

Ahora bien, el concepto de CAMPOS CALCULADOS, NO EXISTE EN MySQL... algunos DBMS's como SQL Server, poseen atributos "virtuales" llamados campos calculados, en donde el valor del campo depende de una operación... este campo en realidad NO SE ALMACENA EN LA TABLA, sino que se calcula "al vuelo".

Una de las razones por las que NO DEBES ALMACENAR CAMPOS CALCULADOS, es justamente porque debes tener cuidado cada que se modifique dicho registro, MODIFICAR O ACTUALIZAR TAMBIÉN EL CAMPO CALCULADO... esto normalmente lo haces mediante TRIGGERS o DISPARADORES, pero insisto que es completamente inutil.

Ahora bien, mencionas en tu primer post, que el campo que pretendes actualizar es el resultado de la suma de tres campos que están en otra tabla, mi pregunta es, ¿cómo relacionas entonces estas dos tablas?

si quisieras actualizar el valor de un campo en específico de una tabla, deberías hacer algo como esto:

1
2
UPDATE tabla SET campo = (AQUÍ PONES UNA SUBCONSULTA DONDE OBTENGAS LA SUMA QUE LE
                          CORRESPONDE A CADA REGISTRO EN PARTICULAR)


o si lo prefieres, puedes utilizar la sintaxis de UPDATE con múltiples tablas:

1
2
3
UPDATE tabla, tabla_relacionada
SET tabla.campo = (tabla_relacionada.campo1 + tabla_relacionada.campo2...)
WHERE (Aquí pones todas relaciones que existen entre tus tablas)

Otra vez me remito a la documentación oficial

http://dev.mysql.com/doc/refman/5.5/en/update.html

Esto actualizaría TODOS LOS REGISTROS DE LA TABLA, sin embargo, si no administras las actualizaciones y/o inserciones mediante TRIGGER's, entonces la información que tengas en este campo, será simplemente un montón de basura.

Haz la prueba, si tienes problemas lo comentas en el foro, si tienes algún error DINOS QUÉ ERROR ES EL QUE TE APARECE, no simplemente digas que las cosas no funcionan... postea cualquier mensaje, código o descripción que te dé el DBMS, así será más fácil tratar de ayudarte.

Saludos
Leo.
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

insertar datos de columas calculadas

Publicado por juan carlos (2 intervenciones) el 03/02/2015 19:48:11
Gracias, lo e probado con update tabla inner join..... y no me dio problemas. Ahorta tengo problemas con el trigger. no me sale, he buscado en el manual y en google y no me aclaro sobre su sintaxis
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

insertar datos de columas calculadas

Publicado por leonardo_josue (1173 intervenciones) el 03/02/2015 20:53:24
Hola de nuevo:

El error claramente está en la línea 3 de tu código ¬¬ (sarcasmo)

Vuelve a leer el último párrafo de mi post anterior:

1
2
3
si tienes problemas lo comentas en el foro, si tienes algún error DINOS QUÉ ERROR ES EL QUE TE APARECE,
no simplemente digas que las cosas no funcionan... postea cualquier mensaje, código o descripción que te dé el
DBMS, así será más fácil tratar de ayudarte.

Te recuerdo que los adivinos sólo existen en la ciencia ficción. Ojo con eso.

Saludos
Leo
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

insertar datos de columas calculadas

Publicado por Christian (1 intervención) el 06/07/2020 22:35:03
Leo
No es necesario que seas tan desagradable para brindar ayuda.
Suerte en la vida
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