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

Mandar llamar tablas temporales

Estas en el tema de Mandar llamar tablas temporales en el foro de Bases de Datos General en Foros del Web. Hola que tal tengo un pequeño problema espero que me puedan ayudar el detalle es que cree una tabla temporal con el codigo de: CREATE ...
  #1 (permalink)  
Antiguo 10/06/2008, 10:09
 
Fecha de Ingreso: junio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Mandar llamar tablas temporales

Hola que tal tengo un pequeño problema espero que me puedan ayudar el detalle es que cree una tabla temporal con el codigo de:

CREATE TEMPORARY TABLE preguntas (
idvalor int(10) auto_increment,
valor varchar(30) NOT NULL,
primary key(idvalor)) ;

y pues a la hora de que realizo la consulta

"SELECT DISTINCT iddoc,icono,descripcion,nombre,peso,direccion FROM documentos , preguntas where documentos.palabraclave=preguntas.valor limit $liminf,$tamPag"

me dice que no existe la tabla.

y agrego la tabla

CREATE TABLE preguntas (
idvalor int(10) auto_increment,
valor varchar(30) NOT NULL,
primary key(idvalor)) ;


y tambien me la agrega y solo asi aparece pero yo lo que quiero es que aparesca la temporal ¿Como seria para poder llamar la tabla temporal en una consulta?

Espero y me puedan ayudar por favor se los agradeceria mucho.
  #2 (permalink)  
Antiguo 10/06/2008, 10:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Mandar llamar tablas temporales

Hola GabrielEnrique,

Una tabla temporal solo sirve durante la ejecución de tu conexión, al terminar la conexión se elimina la tabla porque es temporal.

De ahí viene tu problema.

Tema trasladado a Bases de Datos.
  #3 (permalink)  
Antiguo 10/06/2008, 11:07
 
Fecha de Ingreso: junio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mandar llamar tablas temporales

mmm precisamente por eso quiero agregar una tabla temporal porque esta tabla guarda el resultado de una caja de texto en la que el usuario teclea la informacion para despues realizar una busqueda y no quiero que se quede la informacion guardada despues de que se realize la busqueda ya no me serviria de nada.

Pero el problema es que al momento de ejecutar me aparece un error que no existe la tabla y en mysql si esta yo lo que pienso es que hay una forma de mandar llamar en lenguaje sql una tabla temporal pero no se cual es .
  #4 (permalink)  
Antiguo 26/06/2008, 10:05
 
Fecha de Ingreso: junio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mandar llamar tablas temporales

hola todavia tengo duda no hay nadie que me la pueda resolver d favor
  #5 (permalink)  
Antiguo 27/06/2008, 01:50
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Mandar llamar tablas temporales

Las tablas temporales, suelen ser solo accesibles desde y durante la sesion que las creo.
Lee sobre tablas temporales en tu BD, seguro que la documentación te aclara.

Lo que no entiendo, es por que quieres utilizar una tabla temporal en este caso?
  #6 (permalink)  
Antiguo 30/06/2008, 14:50
 
Fecha de Ingreso: junio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mandar llamar tablas temporales

bueno esta bien ya lei el manual no manejan las tablas temporales en su documentacion el detalle es que creo la tabla temporal.

CREATE TEMPORARY TABLE preguntas (
idvalor int(10) auto_increment,
valor varchar(30) NOT NULL,
primary key(idvalor)) ;

aparece-- Query OK, 0 rows affected (0.05 sec)--

y si quiero insertar seleccionar algun campo o ver en el phpmyadmin

select * from preguntas;

INSERT INTO preguntas VALUES ('5','hola');

aparece un error que la tabla no existe

ahora mi duda es si no va algo extra a la hora de la consulta como esto que se manejaba anteriormente en otras versiones

select * from #preguntas;


INSERT INTO #preguntas VALUES ('5','hola');
  #7 (permalink)  
Antiguo 01/07/2008, 08:26
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: Mandar llamar tablas temporales

Vamos a ver si se entiende:
Una tabla TEMPORAL es una tabla que existe mientras exista el thread donde se creó. Carece de existencia fuera del thread y cumple la función de almacenar datos que no tendrán permanencia o simplemente son de transacción.
Un thread se inicia en el momento de ejecutar una sentencia en la base de datos y termina al devolver los datos o realizar el almacenamiento pedido. Todos los elementos creados dentro del thread donde corre desaparecen al momento de finalizar el thread.
No existe forma de que una tabla temporal permanezca entre threads, simplemente porque no fueron diseñadas para eso.
A partir de comprender este punto te debe resultar evidente que una tabla temporal no es útil ni funcional para lo que tratas de hacer, a menos que la uses dentro de un store procedure, ya que un SP corre completo dentro de un thread. El problema es que todos los valores a usar deben entrar en el SP en el momento de llamarlo. No soportará dos llamadas por la misma razón: cada llamada a un SP es un thread diferente.
Así que la cosa tiene dos soluciones posibles:
1) Manejar todo el proceso de ambas consultas dentro de un mismo SP.
2) Resolver el problema dentro de la aplicación e insertar los datos en las tablas de la aplicación.

Fuera de eso, no veo otra forma.
__________________
¿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 01/07/2008, 10:36
 
Fecha de Ingreso: junio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mandar llamar tablas temporales

bueno gracias ya me fui por otro lado creee una tabla normal y elimino los datos cada sesion con un delete y pues tan tan
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 11:37.