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

insertar registro en varias filas a la vez

Estas en el tema de insertar registro en varias filas a la vez en el foro de Mysql en Foros del Web. hola a todos!! tengo la siguiente duda estoy desarrollando un modulo de mensajería y todo bien hasta el momento , donde tengo 2 tablas relacionadas ...
  #1 (permalink)  
Antiguo 19/02/2012, 18:30
 
Fecha de Ingreso: marzo-2011
Ubicación: viña del mar
Mensajes: 7
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta insertar registro en varias filas a la vez

hola a todos!!

tengo la siguiente duda


estoy desarrollando un modulo de mensajería y todo bien hasta el momento , donde tengo 2 tablas relacionadas ( usuarios ; mensajes) en la cual el usuario puede enviar 1 mensaje a 1 usuario

entonces me gustaría saber si existe alguna forma de insertar un registro en varias filas, en este caso insertar un mismo mensaje en varios usuarios a la vez

al principio lo solucione agrupando los usuarios por una categoría ( alumnos , administrativos etc..)
pero aun no puedo enviar un registro a "n" usuarios.

agradecería si me pueden dar algunas directrices o documentación para poder investigar el tema y darle solución a mi idea.

Saludos.
  #2 (permalink)  
Antiguo 19/02/2012, 19:04
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, 5 meses
Puntos: 2658
Respuesta: insertar registro en varias filas a la vez

Cita:
entonces me gustaría saber si existe alguna forma de insertar un registro en varias filas, en este caso insertar un mismo mensaje en varios usuarios a la vez
Vamos a aclarar algunos conceptos:
- Fila y registro, desde la óptica de las bases de datos, son exactamente la misma cosa, por lo que técnicamente no puedes poner un registro dentro de una fila. Y para pone un registro se hace un INSERT.
- Si por registro te estas refiriendo al valor a poner en un campo, eso es otra cosa. Para eso se hace un UPDATE.
- Si lo que quieres es actualizar un dato determinado en un conjunto de registros de usuarios que están en la misma tabla, lo puedes hacer con un sólo UPDATE siempre y cuando o conozcas qué condición o condiciones cumplen sólo esos registros y lo usas en el WHERE, o bien tienes la lista de PK que corresponden al conjunto, y usas en el WHERE ese listado para indicar a quienes se realizará el UPDATE.
Código MySQL:
Ver original
  1. UPDATE usuarios
  2. SET campo = 'valor'
  3. WHERE condiciones
o bien
Código MySQL:
Ver original
  1. UPDATE usuarios
  2. SET campo = 'valor'
  3. WHERE campoPK IN(1, 2, 3,56, 78, 43, 900)

Ahora bien, por tu descripción, pareciera que lo que quieres es insertar el mensaje en el registro correspondiente a cada uno de esos usuarios, cuando en realidad lo que debes hacer es más bien (y con un modelo de datos consistentemente diseñado) relacionar ese mensaje con aquellos usuarios a los que debe llegar.
Todo el resto es tema de programación.

Pues bien: ¿Qué es lo que vas a hacer?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 19/02/2012 a las 19:11
  #3 (permalink)  
Antiguo 19/02/2012, 21:13
 
Fecha de Ingreso: marzo-2011
Ubicación: viña del mar
Mensajes: 7
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: insertar registro en varias filas a la vez

haber, lo mio mas que ir por el lado de el UPDATE, va por el INSERT .

Las tablas(usuarios; mensajes) estan relacionadas por medio de (id_usuario; id_receptor).

por lo que veo ,lo que estoy tratando de hacer va mas por el lado de la programacion, ya que mi idea consiste en: que por medio de 1 solo imput del formulario, insertar 1 ó 2 ó 3...ó N nombres de usuarios (con su respectivo id_usuario) y en la pagina que procesa la info, mediante un bucle reciba la variable e inserte el mensaje para sus respectivos destinatarios.

Por lo tanto el tema no va en el foro de Mysql .


Gracias gnzsoloyo por la respuesta y desde ya, si hay algo mas que aportar a lo que consulto, quedo atento a sus comentarios
  #4 (permalink)  
Antiguo 19/02/2012, 21:41
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, 5 meses
Puntos: 2658
Respuesta: insertar registro en varias filas a la vez

Cita:
1 solo imput del formulario, insertar 1 ó 2 ó 3...ó N nombres de usuarios (con su respectivo id_usuario)
Bueno, lo que en realidad estás tratando de lograr es lo que se denomina "INSERT masivo", que es una operación de INSERT que permita almacenar muchos registros en una sola llamada.
Eso es sencillo de hacer, aunque algo enredado de implementar programáticamente.
Lo que necesitas lograr es construir desde el PHP un INSERT mas o menos así:
Código MySQL:
Ver original
  1. INSERT INTO usuarios(username, pwd)
  2. VALUES ('usuario1', 'password1'), ('usuario2', 'password2'), ('usuario3', 'password3'),
  3.    ('usuario4', 'password4'), ('usuario5', 'password5'), ('usuario6', 'password6'),
  4.    ('usuario7', 'password7'), ('usuario8', 'password8'), ('usuario9', 'password9'),
  5.    ('usuario10', 'password10');
Obviamente, cada grupo de valores entre paréntesis debe ser agregado a la variable de la sentencia en un ciclo While o For, y la sentencia ser enviada a MySQL sólo al completarla.
Hacerlo denrto de un ciclo iterativo, con un INSERT ejecutado en cada iteración es posible, pero no es muy eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/02/2012, 22:07
 
Fecha de Ingreso: marzo-2011
Ubicación: viña del mar
Mensajes: 7
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: insertar registro en varias filas a la vez

Perfecto! con esa explicación que me queda claro lo que tengo que hacer, nuevamente gracias gnzsoloyo

Etiquetas: insert
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 20:29.