Ver Mensaje Individual
  #6 (permalink)  
Antiguo 10/06/2011, 11:36
mogurbon
 
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