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

Tabla que tome datos de otra tabla

Estas en el tema de Tabla que tome datos de otra tabla en el foro de Mysql en Foros del Web. Tengo dos tablas en el misma base de datos, tabla1 y tabla2 lo que quiero que la tabla2 trabaje siempre con los datos de la ...
  #1 (permalink)  
Antiguo 26/04/2009, 19:21
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Tabla que tome datos de otra tabla

Tengo dos tablas en el misma base de datos, tabla1 y tabla2 lo que quiero que la tabla2 trabaje siempre con los datos de la tabla1 quiero que sean dos tablas identicas y que esta tabla2 tome los datos perpetuamente de la tabla1 y que cada cambio que tenga la tabla1 lo tenga automaticamenta la tabla2, esto es posible?


Muchas Gracias!
  #2 (permalink)  
Antiguo 26/04/2009, 20:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Tabla que tome datos de otra tabla

Hola custus,

Puedes usar un TRIGGER en los INSERTS y UPDATES de tu tabla1.

Saludos.
  #3 (permalink)  
Antiguo 27/04/2009, 06:23
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Tabla que tome datos de otra tabla

Muchas Gracias por tu rapida respuesta GatorV tenes idea de como aplicar lo que me comentas? Gracias!
  #4 (permalink)  
Antiguo 27/04/2009, 07:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Tabla que tome datos de otra tabla

custus

te comparto un link de ejemplo del manejo de triggers en mysql, te puede servir mucho.
http://www.fpress.com/revista/num0206/art.htm

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 27/04/2009, 12:34
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Tabla que tome datos de otra tabla

estube leyendo un poco el link que me pasaste pero en fin no pude aplicarlo, tenes idea de como lo aplicaria? Gracias!
  #6 (permalink)  
Antiguo 27/04/2009, 13:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Tabla que tome datos de otra tabla

Te pongo un ejemplo de lo que tu necesitarías:

Código sql:
Ver original
  1. mysql> CREATE TABLE tabla1(campo1 INTEGER, campo2 INTEGER);
  2. Query OK, 0 ROWS affected (0.02 sec)
  3.  
  4. mysql> CREATE TABLE tabla2(campo1 INTEGER, campo2 INTEGER);
  5. Query OK, 0 ROWS affected (0.02 sec)
  6.  
  7. mysql> delimiter &&
  8. mysql> CREATE TRIGGER ejemplo_trig after INSERT ON tabla1
  9.     -> FOR each ROW
  10.     -> BEGIN
  11.     -> INSERT INTO tabla2 VALUES(NEW.campo1,NEW.campo2);
  12.     -> end&&
  13. Query OK, 0 ROWS affected (0.02 sec)
  14. mysql> delimiter ;
  15.  
  16. mysql> INSERT INTO tabla1 VALUES(1,2);
  17. Query OK, 1 ROW affected (0.00 sec)
  18.  
  19. mysql> INSERT INTO tabla1 VALUES(1,3);
  20. Query OK, 1 ROW affected (0.00 sec)
  21.  
  22. mysql> INSERT INTO tabla1 VALUES(1,4);
  23. Query OK, 1 ROW affected (0.01 sec)
  24.  
  25. mysql> INSERT INTO tabla1 VALUES(1,4);
  26. Query OK, 1 ROW affected (0.01 sec)
  27.  
  28. mysql> SELECT *FROM tabla1;
  29. +--------+--------+
  30. | campo1 | campo2 |
  31. +--------+--------+
  32. |      1 |      2 |
  33. |      1 |      3 |
  34. |      1 |      4 |
  35. +--------+--------+
  36. 3 ROWS IN SET (0.00 sec)
  37.  
  38. mysql> SELECT *FROM tabla2;
  39. +--------+--------+
  40. | campo1 | campo2 |
  41. +--------+--------+
  42. |      1 |      2 |
  43. |      1 |      3 |
  44. |      1 |      4 |
  45. +--------+--------+
  46. 3 ROWS IN SET (0.00 sec)

Observa que el trigger está programado para que cada que se inserte en la tabla tabla1, se inserte lo mismo en tabla2.
tabla2 tiene los mismos valores que tabla1 y nunca fue necesario hacer el insert.

Espero te sirva.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 28/04/2009, 07:03
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Tabla que tome datos de otra tabla

yo manejo la base de datos desde el phpmyadmin, se aplicaria de la misma manera?


Saludos.
  #8 (permalink)  
Antiguo 28/04/2009, 07:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Tabla que tome datos de otra tabla

En teoría es lo mismo. Sin embargo, creo que debes tener cuidado en los delimitadores que usas sobre phpmyadmin, muchas veces generan errores de sintaxis.

delimiter %%
CREATE TRIGGER ejemplo_trig after INSERT ON tabla1
FOR each row
begin
INSERT INTO tabla2 VALUES(new.campo1,new.campo2);
end%%
delimiter ;

No tengo como probarlo, pero creo que es un problema muy común.

Espero te funcione.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 28/04/2009, 09:42
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Tabla que tome datos de otra tabla

en donde dice: "(new.campo1,new.campo2);" tengo que poner los campos que ya estan creados en la tabla1? Gracias!


las tablas que tengo son jos15_users es una tabla que tiene usuarios de joomla luego en la misma BD tengo josmv_users que quiero tengan los mismos users, para eso serviria?


Gracias!
  #10 (permalink)  
Antiguo 28/04/2009, 10:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Tabla que tome datos de otra tabla

Custus.

El trigger que te presenté, responde al evento insert en la tabla. Para tu caso, cada que un usuario se registra, los datos se insertan en jos15_users, también se insertaran en josmv_users.

Por ejemplo, tienes tu formulario y lo que hace internamente es un:
insert into jos15_users (login,password,email,telefono,direccion) values(todos los valores);

new.campo1 para este caso, sería new.login que lo que hace es coger lo que insertas en login en la tabla jos15_users e ingresar ese mismo valor a la tabla josmv_users.
Así mismo es con todos los campos.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 12:20.