Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2006, 04:24
rasgon
 
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Cómo hacer que devuelva todos los nombres de la tabla2 que no están en la tabla1???

Hola

Tengo un problemón. Abstrayendo, tengo la siguiente tabla

Campos tabla1:
nombre, num_error

Campos tabla2:
nombre

Quiero hacer un update de la tabla1, que sea que sume 1 a num_error en los registros cuyo nombre no esté en la tabla2.

Es decir, si en la tabla1 tenemos

nombre
-------
Adolfo
Vicente
David

Y en la tabla2 tenemos
nombre
-------
Adolfo
Miguel
Jose

Tendría que sumar 1 al campo num_error de Vicente y David en la tabla1, no?

Esto me gustaría hacerlo usando este código:

UPDATE tabla1, tabla2
SET tabla1.num_error=tabla1.num_error+1
WHERE (SELECT COUNT(*) FROM tabla1,tabla2 WHERE tabla1.nombre=tabla2.nombre)=0


Pero no puedo usar un select anidado porque mi versión de Mysql no me lo permite.

Y haciendo...

UPDATE tabla1, tabla2
SET tabla1.num_error=tabla1.num_error+1
WHERE tabla1.nombre<>tabla2.nombre


...no funciona bien, porque busca si un nombre de la tabla1, por ejemplo Adolfo, no está en la tabla, y siempre devuelve que no está, porque aunque no lo encuentra en el primer registro, pues adolfo=adolfo, en el segundo y el tercero sí se cumple que es falso, pues adolfo!=miguel y adolfo!=jose...

Así pues, ¿cual es la solución?

Yo utilizo PHP. ¿Se puede hacer esto sin necesidad de trabajar con los resultados de un SELECT y haciendo UPDATE de los datos que no estén en el array? Me gustaría hacer esto sólo con Mysql, sin utilizar arrays en PHP para que el rendimiento sea óptimo.

Un saludo.