Foros del Web » Programando para Internet » PHP »

Problema con tablas temporales

Estas en el tema de Problema con tablas temporales en el foro de PHP en Foros del Web. Buenas Noches Compañeros tengo un problema con una tabla temporal.. Creo la tabla temporal en el archivo crearTablaTmp.php CREATE TABLE #tabletemporal ............. e inserto datos ...
  #1 (permalink)  
Antiguo 09/06/2011, 20:23
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Problema con tablas temporales

Buenas Noches

Compañeros tengo un problema con una tabla temporal..



Creo la tabla temporal en el archivo crearTablaTmp.php


CREATE TABLE #tabletemporal ............. e inserto datos ....

En el archivo consultaTablaTmp.php consulto la tabla :


SELECT * FROM #tablatemporal .............

Pero me dice que la tabla no existe.... entonces lo que hago es incluir el archivo
crearTablaTmp.php en el archivo consultaTablaTmp.php

El funcionamiento es asi: Cuando creo la tabla redirecciono de una vez al archivo
consultaTablaTmp.php pero me dice que la tabla no existe .... es como si al redireccionar , la tabla que cree me la eliminara ...

Agradezco sus colaboraciones.


Gracias.
  #2 (permalink)  
Antiguo 09/06/2011, 20:30
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema con tablas temporales

redireccionar no ejecuta ninguna consulta a la BD por tanto no borra la tabla, la tabla nunca estuvo, como saber si está de verdad la tabla, ??
pues copia tu consulta y la ejecutas en el phpmyadmin a ver que hace de verdad
o le pones a tu mysql_query() or die (mysql_error())
  #3 (permalink)  
Antiguo 09/06/2011, 20:53
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Problema con tablas temporales

Hola compañero.

Si si tiene razon .... al redireccionar no tiene porque eliminar la tabla...

y lo de probar si me creo la tabla e inserto datos esta bien ... cuando crea la tabla e inserta me muestra un mensaje indicando que si se creo correctamente la tabla...

La verdad no se que hacer en ese caso.

Pues nunca habia trabajado con tablas temporales... no se si haya alguna otra opcion para poder guardar una consulta que me trae millones de registros.... pues la idea de la tabla temporal fue para que despues con los procedimientos siguientes no atacara directamente a la base si no a esa tabla .... pues como dije son muchisisimos registros...

Gracias por sus colaboraciones..
  #4 (permalink)  
Antiguo 09/06/2011, 21:38
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
Respuesta: Problema con tablas temporales

hola y que es lo que quieres hacer, a lo mejor encontramos otra forma de hacerlo
  #5 (permalink)  
Antiguo 10/06/2011, 11:03
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Problema con tablas temporales

Buenos dias compañeros..

Necesito hacer varios procedimientos con una sola consulta...

En esta caso seria una consulta base... solo que es bastante robusta, bastante grande me puede traer millones de registros....

Para poder trabajar con esa consulta cree una tabla temporal con los registros de dicha consulta para asi poder trabajar en ella sin afectar directamente a la base..

Primero tengo problemas con la tabla temporal, como dije anteoriormente la creo en un archivo y si la consulto en otro me dice que la tabla no existe, y pues yo valide que la tabla si me la creara.....

Gracias.....
  #6 (permalink)  
Antiguo 10/06/2011, 11:36
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Problema con tablas temporales

bueno pues aqui te dejo una funcion malevola que en alguna ocasion utilice precisamente creando una tabla temporal con la cual hago un query medio macabro (left join) debes tomar en cuenta que para poder crear ese tipo de tablas , el usuario con que conectas php a tu base de datos debe de tener el permiso de create temporary



Código PHP:
function existeresgrupo($respuestas){
    global 
$objDB;
    
/*$sql="select idgii_respgrupo from gii_respgrupo_respuestas where idgii_respuestas in($cadenarespuestas) limit 1";
    #echo $sql . "<br>";
    $data=$objDB->Select($sql);
    if ($objDB->NumRows()>0) {
        return true;
    }
    else {
        return false;
    }*/
    
$numresp=count($respuestas);
    
$sql1="CREATE TEMPORARY TABLE IF NOT EXISTS temp_respuestas
    (
       `idgii_respuestas` int(10) unsigned NOT NULL
     ) "
;
    
#echo "<br><br><br> aqui <br>";
    
$objDB->exeQuery($sql1);
    foreach (
$respuestas as $keyres => $valueres){
        
$query="INSERT INTO `temp_respuestas`(idgii_respuestas) VALUES ('$keyres');";
        
#echo $query . "<br>";
        
$objDB->exeQuery($query);
    }
    
    
$sql2="select a.idgii_respgrupo, count(a.idgii_respuestas)
    from gii_respgrupo_respuestas a left join temp_respuestas b on a.idgii_respuestas=b.idgii_respuestas
    group by a.idgii_respgrupo having count(a.idgii_respuestas)=$numresp and count(b.idgii_respuestas)=$numresp limit 1"
;
    
$data=$objDB->Select($sql2);
    
$numrows=$objDB->NumRows();
    
    
#print_r($data);
    
    #echo "<br>".$sql2;
    #echo "<br><br><br>";
    
$sqldrop="DROP TABLE temp_respuestas";
    
$objDB->exeQuery($sqldrop);
    
    if(
$numrows>0){
        if (
$data[0]["idgii_respgrupo"]!=0) {
            return 
$data[0]["idgii_respgrupo"];
            
        }else {
            return 
0;
        }
    }
    else {
        return 
0;
    }
    

__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Etiquetas: tablas, temporales
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:46.