Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

añadir datos a un campo de una tabla

Estas en el tema de añadir datos a un campo de una tabla en el foro de Mysql en Foros del Web. Buenas de nuevo, Conozco la consulta con UPDATE, para introducir datos nuevos en un campo. Pero, si lo que quieres es añadir nuevos datos a ...
  #1 (permalink)  
Antiguo 29/12/2011, 07:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
añadir datos a un campo de una tabla

Buenas de nuevo,

Conozco la consulta con UPDATE, para introducir datos nuevos en un campo. Pero, si lo que quieres es añadir nuevos datos a los que ya tienes, ¿hay algún tipo de consulta MySql?
Me imagino que se podría hacer, extrayendo los que hay, añadiendo los nuevos a ellos (fuera de la tabla) e introduciéndolos con UPDATE, pero creo que sería más sencillo añadiéndolos directamente al campo. ¿Se puede? (a ser posible, de manera que al imprimirlos posteriormente hubiera un espacio entre unos datos y otros).
¡Muchas gracias!
  #2 (permalink)  
Antiguo 29/12/2011, 10:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: añadir datos a un campo de una tabla

UPDATE table SET my_field = myfield [operator] 'value';

donde el operador puede ser "+" para sumar enteros, en el caso de string es mejor usar la función CONCAT:

SET my_field = CONCAT(my_field, 'new string')

__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 29/12/2011, 18:34
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: añadir datos a un campo de una tabla

¡muchísimas gracias maycolalvarez!

Me funciona perfectamente. Lo único que me quedaría por resolver es que cada vez que añada datos nuevos, éstos se separen de los anteriores por un espacio. Vamos, que al imprimir el campo entero se pase a una línea nueva cada vez que se hubiera añadido nuevos datos.

Supongo que es posible hacerlo, ¿no?

un saludo.
  #4 (permalink)  
Antiguo 30/12/2011, 06:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: añadir datos a un campo de una tabla

O agregas tu el separador delante del nuevo texto

SET my_field = CONCAT(my_field, ' new string')

o usas Concatenate With Separator

SET my_field = CONCAT_WS (' ', my_field, 'new string')

el primer parametro es el separador...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 30/12/2011, 06:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: añadir datos a un campo de una tabla

Cita:
Lo único que me quedaría por resolver es que cada vez que añada datos nuevos, éstos se separen de los anteriores por un espacio.
Depende.
Si los datos son modificaciones a los ya existentes, lo que te indica Quimfv es un método adecuado. Pero si la idea que planteas es poner en el mismo campo varios valores distintos para la misma columna, estás planteando un campo multivaluado, y esos están prohibidos en las bases de datos relacionales. Son una violación al paradigma y sólo traen problemas.
Así que de qué se trata: Modificar o poner N valores al mismo campo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 30/12/2011, 13:09
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: añadir datos a un campo de una tabla

Cita:
Iniciado por quimfv Ver Mensaje
O agregas tu el separador delante del nuevo texto

SET my_field = CONCAT(my_field, ' new string')

o usas Concatenate With Separator

SET my_field = CONCAT_WS (' ', my_field, 'new string')

el primer parametro es el separador...
Muchas gracias quimfv.

La verdad es que lo he probado y no me hace el cambio de línea. Puede que me haya explicado mal, porque no es exactamente un espacio lo que quiero crear, sino un cambio de línea (aunque éste tb supone crear un espacio..).
Supongo que tb puedo agregar el cambio de línea fuera de la tabla, como hemos comentado, haciendo algo así: $a=$b+$c. Siendo $b la variable que contiene los datos del campo y $c una nueva variable con los datos que quiero añadir. Pero tengo el mismo problema, ¿cómo creo ese cambio de línea?.
gnzsoloyo, lo comento al ppio del hilo, que lo que quiero es "añadir" datos (a los ya existentes) no modificarlos (con UPDATE).
No creo que sea necesario considerar que pongo N valores, aunque expuesta la idea, no me vendría mal, a lo mejor, porque si al sacar los datos del campo, los pudiera tratar como valores diferentes, me facilitaría las cosas. Pero vamos, de momento, con que me cree los saltos de línea me conformo.
Aunque luego quiero hacer otra cosa, pero es menos importante. Ya lo comentaría en otro hilo. Sería el cambiar de color a la primera palabra después de "esos supuestos" cambios de línea.



gracias
  #7 (permalink)  
Antiguo 30/12/2011, 13:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: añadir datos a un campo de una tabla

Cita:
lo que quiero es "añadir" datos (a los ya existentes) no modificarlos (con UPDATE).
Añadir "datos" a los ya existentes en un campo o columna de un registro es, para las Bases de Datos, exactamente lo mismo. La sentencia sigue siendo UPDATE, por lo que lo que se hace es modificar el contenido. El que sea agregar y no cambiar, es más o menos irrelevante para la sintaxis de la consulta, ya que sólo cambia la forma de escribir la asignación del dato (el SET) y no la consulta.
Cita:
no es exactamente un espacio lo que quiero crear, sino un cambio de línea
Desde el punto estricto del SQL, no hay "saltos de línea". Sólo hay datos que van a ir a un campo VARCHAR. Qué son esos datos, al SQL no le interesa, sino su tipo.
Un salto de línea es un caracter especial que no puede ingresarse vía consulta, porque no es representable como cadena de texto. En ese caso el agregar el caracter dependerá de varias cosas: el lenguaje de programación, la forma de manipular con SQL ese dato y el tipo de la columna donde se almacenará.
Una forma simple de hacerlo sería:
Código MySQL:
Ver original
  1. SET campo = CONCAT(campo, '\r', 'valor');
Esto sería aprovechando el manejo de caracteres escapados para agregar un retorno de carro (salto de linea) sin fin de párrafo.
Otros modos son más complejos y dependen del lenguaje de programación usado.
Cita:
No creo que sea necesario considerar que pongo N valores
En realidad debes considerarlo, porque no es lo mismo si me planteas poder agregar texto a un documento almacenado en un VARCHAR o TEXT, que si quieres guardar una lista de colores (blanco, negro, verde, rojo), identificadores de otra tabla (1, 45, 67, 9013), hijos de una persona o cosas iterables así.
En el primer caso, el método de enlazar lo nuevo a lo viejo es correcto. En el segundo caso NO, es una enorme metida de pata, porque si una entidad X tiene respecto de un dato una relación 1:N (uno a muchos valores) eso indica que debe existir una nueva entidad que administre esos valores, y eso se hace creando una tabla nueva para ese concepto.

Como puedes ver, eso es algo que tienes que resolver ahora, porque eso afectará todo el resto del desarrollo.

Así que ¿de qué se trata? ¿Agregar texto a otro, o una lista de valores pertenecientes a un atributo determinado?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 31/12/2011, 05:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: añadir datos a un campo de una tabla

OK, lo pillo, lo pillo. Lo que quería decir es que simplemente quiero añadir texto con un cambio de línea. No quiero ir contra la ley:). Es para un Varchar o Text.
Graccie mille;)
  #9 (permalink)  
Antiguo 31/12/2011, 06:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: añadir datos a un campo de una tabla

Prueba con el CONCAT() que te puse y nos cuentas. Debería funcionar, pero el resultado no lo vas a ver en una consulta sencilla de consola, lo podrás ver por programación o puede que en el phpMyadmin, si eso usas..
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:06.