Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/02/2009, 09:41
Avatar de kanakis
kanakis
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Duda chapucera

Perdonad mi ignorancia, pero como decía al principio estoy en proceso de aprendizaje. Creo que no he explicado bien mis intenciones, así os las detallaré para que podáis echarme un cable.

Tengo dos tablas con los campos siguientes:
  • clientes: (NIF, titular, calle, numero,... municipio, ...)
  • calles: (ID, via, calle, municipio)

Donde clientes.NIF es una clave primaria y única de clientes, calles.ID es la clave primaria y única de clientes, y donde los campos calle-municipio de "calles" forman una clave única.

Por otro lado, tengo una página en PHP que realiza la siguiente consulta: Seleccionar en la tabla "clientes" todas las calles que no existan en la tabla "calles" e insertarlas en ésta. Es decir, una especie de actualización de la tabla "calles" en función de "clientes". Aquí surge el problema. Si hago ésto:

Código:
$result = mysql_db_query("datos","SELECT * FROM clientes",$db);

while($row = mysql_fetch_array($result)){

      $insercion="INSERT INTO calles (ID, VIA, CALLE, MUNICIPIO) 
      VALUES (NULL,'".$row["VIA"]."','".$row["Calle"]."','".$row["Municipio"]."')";

       mysql_db_query("glp",$insercion,$db) or die("Error:".mysql_error());
}
El bucle que inserta calles se detiene en cuanto encuentra una repetida, por lo que la tabla "calles" se queda a medio actualizar. Yo sospecho que la clave de la solución se encuentra en la consulta inicial:

Código:
"SELECT * FROM clientes" 
Esto selecciona todos los clientes en lugar de sólo aquellos en los que la calle no está repetida, así que quizás por eso no puedo insertarlos todos. ¿Serviría hacer algo así?

Código:
"SELECT * FROM clientes, calles
WHERE clientes.calle  <> calles.calle" 
¿Cómo lo implementaríais vosotros? Creo que lo que quiero hacer en realidad es bien sencillo, sólo que estoy demasiado pegado. Gracias de nuevo, perdonad la molestia y un saludo.