Foros del Web » Programando para Internet » PHP »

mezclar tablas

Estas en el tema de mezclar tablas en el foro de PHP en Foros del Web. a ver. tengo dos tablas con campos similares, necesito hacer una mezcla entre ellas dada una condicion. por ejemplo tabla uno ID Nombre Direccion ---|-----------|------------- ...
  #1 (permalink)  
Antiguo 26/09/2003, 07:42
 
Fecha de Ingreso: febrero-2003
Ubicación: La serena
Mensajes: 144
Antigüedad: 21 años, 2 meses
Puntos: 0
mezclar tablas

a ver. tengo dos tablas con campos similares, necesito hacer una mezcla entre ellas dada una condicion. por ejemplo

tabla uno

ID Nombre Direccion
---|-----------|-------------
1 pepe la casa
2 juan la choza
3 pipo la cazucha
4 pato la serena


Tabla dos

ID Nombre Direccion
----|-----------|------------
1 la casa
2 la choza
4 la serena

la idea es poner el nombre en la tabla 2 consultando por el ID
__________________
Hoy dia aprendí algo nuevo.
  #2 (permalink)  
Antiguo 26/09/2003, 09:46
 
Fecha de Ingreso: febrero-2003
Ubicación: La serena
Mensajes: 144
Antigüedad: 21 años, 2 meses
Puntos: 0
lo trate de hacer asi pero no me sale
UPDATE prueba1, prueba2 SET prueba2.direccion = prueba1.direccion WHERE prueba1.ID = prueba2.ID
__________________
Hoy dia aprendí algo nuevo.
  #3 (permalink)  
Antiguo 26/09/2003, 12:30
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Código PHP:
<?php

// imagina que es la 1º tabla:

// id - dato1 - dato2
// 1  - pepe  - hola


// imagina que es la 2º tabla:

//  id - dato1 - dato2
//  1  - pepe  -  hola1


// ahora voy a sacar el valor de dato4, comparando el dato1 entre las dos tablas...
// si son iguales te mostrara el dato4


$buscar "1";

    
$consulta mysql_query("SELECT * FROM $sql_tabla_1 WHERE id='$buscar'") or die("error sql");

        while(
$resultados mysql_fetch_array($consulta)) {

        
$dame_dato1 "$resultados[dato1]";
        
$dame_dato2 "$resultados[dato2]";
    }

            echo 
$dame_dato1// ==> pepe
            
echo $dame_dato2// ==> hola




$buscar $dame_dato1;

    
$consulta mysql_query("SELECT * FROM $sql_tabla_2 WHERE dato1='$buscar'") or die("error sql");

        while(
$resultados mysql_fetch_array($consulta)) {

        
$dame_dato3 "$resultados[dato1]";
        
$dame_dato4 "$resultados[dato2]";
    }

            echo 
$dame_dato3// ==> pepe
            
echo $dame_dato4// ==> hola1
            
            
//aqui hago el update, selecciono la tabla_2, y actualizo el campo dato2 con el valor de la tabla_1

mysql_query("UPDATE $sql_tabla_2 SET dato2='$dame_dato4' WHERE dato1='$buscar'") or die("error sql");

// he cambiado hola1 x hola

?>
no se si me explique bien...?¿
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 26/09/2003 a las 12:36
  #4 (permalink)  
Antiguo 26/09/2003, 14:12
 
Fecha de Ingreso: febrero-2003
Ubicación: La serena
Mensajes: 144
Antigüedad: 21 años, 2 meses
Puntos: 0
si mas o menos eso seria pero son dos tablas en las que no conozco el dato que tengo que verificar y actualizar,

lo hize mas omenos asi pero son muchos registros.

<?php
$db_link=mysql_connect("hola","root");
mysql_select_db("base_de_prueba",$db_link) ;
$consulta1=mysql_query("SELECT * FROM prueba1");
//hago un ciclo para recorrer las tabla origen
while ($row = mysql_fetch_row($consulta1)){
$strsql=("SELECT * FROM pc310503 where ID='".$row[0]."'");
$consulta2=mysql_query($strsql);
if (mysql_num_rows($consulta2)>0){ //entonces encontro lo que buscamos
$actualiza=mysql_query("UPDATE prueba2 SET prueba2.direccion = '".$row[1]."' WHERE ID= '".$row[0]."'") or die ("error sql");
}
}
?>

haciendo una prueba con 3 registros me sale ok, pero el problema es que las tablas tienen como 90.000 registros cada una asi que me sale un error de

Fatal error: Maximum execution time of 30 seconds exceeded in d:\intranet\www\prueba.php on line 8
__________________
Hoy dia aprendí algo nuevo.
  #5 (permalink)  
Antiguo 26/09/2003, 14:32
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
eso es por el php.ini

max_execution_time = 30

ahora te digo como engañarlo
__________________
3w.valenciadjs.com
3w.laislatv.com
  #6 (permalink)  
Antiguo 26/09/2003, 14:46
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
mira al principio de tu script pones esto

Código PHP:
set_time_limit(0); 

mas info

http://es.php.net/set_time_limit
__________________
3w.valenciadjs.com
3w.laislatv.com
  #7 (permalink)  
Antiguo 26/09/2003, 15:33
 
Fecha de Ingreso: febrero-2003
Ubicación: La serena
Mensajes: 144
Antigüedad: 21 años, 2 meses
Puntos: 0
pero de todas maneras son muchos registros como te digo son 90.000 en una y como 7000 en otra, igual se me va a las pailas el proceso
__________________
Hoy dia aprendí algo nuevo.
  #8 (permalink)  
Antiguo 26/09/2003, 18:09
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
dime una cosa...

has puesto esto en el 1º del script de busqueda...??

set_time_limit(0);


y no te funciona-....????

set_time_limit(99999);
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 26/09/2003 a las 19:22
  #9 (permalink)  
Antiguo 28/09/2003, 21:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
hardlock

Los UPDATES con condicionales (WHERE) que usen + de una tabla a la vez sólo están disponibles desde Mysql 4.0.x ..

Revisa priméro si usas esa versión de Mysql y .. luego pregunta en el foro de "Base de datos" por la sintax correcta del UPDATE (o bien te pasas por www.mysql.com y lo chekeas tu mismo ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 06:50.