
13/04/2006, 04:24
|
| | Fecha de Ingreso: febrero-2003 Ubicación: Madrid
Mensajes: 44
Antigüedad: 22 años, 1 mes 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. |