Ver Mensaje Individual
  #23 (permalink)  
Antiguo 20/12/2011, 11:20
vicman
 
Fecha de Ingreso: enero-2004
Ubicación: Medellin
Mensajes: 178
Antigüedad: 20 años, 4 meses
Puntos: 8
Respuesta: Problemas con bucle while

La verdad mi amigo, yo toda esas tareas las resumiria en 3 simples querys de SQL ejecutados en ese orden.

Código SQL:
Ver original
  1. //UPDATE
  2. UPDATE manufacturer  
  3. SET name = (
  4.   SELECT  M.marca_detalle FROM marcas M WHERE M.marca_id = manufacturer.manufacturer_id
  5. );
  6.  
  7. //INSERT
  8. INSERT INTO manufacturer (manufacturer_id,name)
  9. SELECT M.marca_id, M.marca_detalle FROM marcas M WHERE M.marca_id NOT IN( SELECT  manufacturer_id FROM manufacturer)
  10.  
  11.  
  12. //DELETE
  13. DELETE FROM manufacturer WHERE manufacturer_id NOT IN(SELECT M.marca_id FROM marcas M)


Código PHP:
Ver original
  1. //actualizo los registros comunes
  2. $sql=mysql_query("UPDATE manufacturer  
  3. SET name = (
  4.  SELECT  M.marca_detalle FROM marcas M WHERE M.marca_id = manufacturer.manufacturer_id
  5. )",Conectar::con())or die (mysql_error()) ;
  6.  
  7. //Ingreso los registros que no existan en manufacurer
  8. $sql =mysql_query("INSERT INTO manufacturer (manufacturer_id,name)
  9. SELECT M.marca_id, M.marca_detalle FROM marcas M WHERE M.marca_id NOT IN( SELECT  manufacturer_id FROM manufacturer)",Conectar::con())or die (mysql_error()) ;
  10.  
  11.  
  12. //Elimino los id que no estan en la tabla marcas pero si en la tabla manufacturer
  13. $sql=mysql_query("DELETE FROM manufacturer WHERE manufacturer_id NOT IN(SELECT M.marca_id FROM marcas M)",Conectar::con())or die (mysql_error()) ;

Un saludo.

Última edición por vicman; 20/12/2011 a las 11:28 Razón: Ejemplo de como deberia ejecutarse