Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/11/2012, 10:59
Avatar de eaanillol
eaanillol
 
Fecha de Ingreso: septiembre-2010
Ubicación: Bogota - Colombia
Mensajes: 25
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: ORA-01779: cannot modify a column which maps to a non key-preserved table

Buenos días seguí intentando y me topé con la siguiente solución:

Código SQL:
Ver original
  1. UPDATE vehiculonuevo SET vehiculonuevo.idempresa =
  2. (
  3.    SELECT v2.company AS company2 FROM grupos g
  4. INNER JOIN usuariogrupo  ug ON ug.idgrupo = g.id
  5. INNER JOIN visitor v ON v.visitorid = ug.idusuario
  6. INNER JOIN empresa e ON e.id = v.company
  7. INNER JOIN usuariogrupo ug2 ON ug.idgrupo = ug2.idgrupo AND ug2.conmicrositio = 'S'
  8. INNER JOIN visitor v2 ON v2.visitorid = ug2.idusuario
  9. WHERE vehiculonuevo.idempresa = v.company
  10. )
  11. WHERE EXISTS (
  12.  SELECT v2.company AS company2 FROM grupos g
  13. INNER JOIN usuariogrupo  ug ON ug.idgrupo = g.id
  14. INNER JOIN visitor v ON v.visitorid = ug.idusuario
  15. INNER JOIN empresa e ON e.id = v.company
  16. INNER JOIN usuariogrupo ug2 ON ug.idgrupo = ug2.idgrupo AND ug2.conmicrositio = 'S'
  17. INNER JOIN visitor v2 ON v2.visitorid = ug2.idusuario
  18. WHERE vehiculonuevo.idempresa = v.company
  19. );

Solo es hacer la subconsulta en el set y colocar la misma en el where con un exists y listo. Ademas también se debe cruzar el campo de la tabla a actualizar con la consulta. :