Jajajaja les tengo el siguiente reto:
Resulta que tengo en bd una inestabilidad en los datos. Tengo varios usuarios que pertenecen a una misma empresa, uno es principal y los otros secundarios, pero cada uno de ellos representan una empresa diferente, y son dueños de varios vehículos. Para saber de quién es cada vehículo se acude al idempresa en la tabla de vehículos. LO que me toca hacer es unificar los vehiculos de los usuarios secundarios a la empresa del usuario principal, es decir que los carros de los usuarios secundarios tengan el idempresa del usuario principal. Entonces leyendo en la web armé la siguiente consulta:
Código SQL:
La tabla "usuariogrupo" agrupa a los usuarios por grupo y tambien contiene el idusario.Ver original
UPDATE (SELECT ug.*,vn.idempresa,v2.company AS company2 FROM grupos g INNER JOIN usuariogrupo ug ON ug.idgrupo = g.id/*Obtengo usuarios por grupo*/ INNER JOIN visitor v ON v.visitorid = ug.idusuario/*obtengo la empresa */ INNER JOIN empresa e ON e.id = v.company/*cruzo con empresa*/ INNER JOIN vehiculonuevo vn ON vn.idempresa = v.company/*Cruzo con vehiculo nuevo para obtener los vehiculos por cada grupo*/ INNER JOIN usuariogrupo ug2 ON ug.idgrupo = ug2.idgrupo AND ug2.conmicrositio = 'S'/*Obtengo los usuarios principales por grupo*/ INNER JOIN visitor v2 ON v2.visitorid = ug2.idusuario /*Obtengo el company o idempresa del usuario principal*/ ) SET idempresa = company2 ;
La tabla visitor contiene los usuarios y al campo company, que es el campo de empresa en esa tabla. Aqui el idusuario es el visitorid
Empresa: contiene las empresas.
vehiculonuevo contiene los vehiculos, ádemas contiene el campo idempresa.
Para identificar quien es el usuario principal la tabla usuariogrupo en el campo conmicrositio debe ser 'S'.
AL ejecutar sale el siguiente error: ORA-01779: cannot modify a column which maps to a non key-preserved table
Quedo atento...