update con validación en varias tablas con sqlserver

ivancho72
30 de Julio del 2004
Buenas tardes

El problema que tengo es el siguiente:

Necesito en sql server 2000 hacer un update a una tabla pero para ello requiero que se cumplan varias condiciones que involucran a otras dos tablas, hasta el momento he utilizado los siguientes 3 scripts y ninguno me ha funcionado y siempre me genera un error de sintaxis

1.
update grupoinvestigacion
set grupoinvestigacion.Investigador = (select investigador.Nombre
from investigador, grupoinvestigacion, colaboracion
where (investigador.CodInvestigador = colaboracion.CodInvestigador
and grupoinvestigacion.CodGrupo = colaboracion.CodGrupo
and colaboracion.TipoColaboracion = 'Investigador Principal'
and grupoinvestigacion.Investigador LIKE ''))

2.
update grupoinvestigacion,investigador,colaboracion
set grupoinvestigacion.Investigador = investigador.Nombre
where (investigador.CodInvestigador = colaboracion.CodInvestigador
and grupoinvestigacion.CodGrupo = colaboracion.CodGrupo
and colaboracion.TipoColaboracion = 'Investigador Principal'
and grupoinvestigacion.Investigador LIKE '')

3.
update grupoinvestigacion
inner join colaboracion
on (grupoinvestigacion.CodGrupo = colaboracion.CodGrupo AND
grupoinvestigacion.Investigador LIKE '' AND
colaboracion.TipoColaboracion = 'Investigador Principal')
inner join investigador
on investigador.CodInvestigador = colaboracion.CodInvestigador
set grupoinvestigacion.Investigador = investigador.Nombre

lo curioso es que al hacer el equivalente con un select funcionan bien y me seleccionan lo que requiero

agradezco su colaboración y disculpen si cometí algún error infantil

Isa? Islas
30 de Julio del 2004
update grupoinvestigacion
set grupoinvestigacion.Investigador = investigador.Nombre
from investigador
join grupoinvestigacion on grupoinvestigacion.CodGrupo = colaboracion.CodGrupo
join colaboracion on investigador.CodInvestigador = colaboracion.CodInvestigador
WHERE colaboracion.TipoColaboracion = 'Investigador Principal'
-- No entiendo porque el LIKE esta solo
--and grupoinvestigacion.Investigador LIKE ''

ivancho72
30 de Julio del 2004
utilizo LIKE '' para filtrar los que están vacíos ya que grupoinvestigacion.Investigador es un campo nuevo de la tabla y la gran mayoría están seteados a vacio y son precisamente los que requiero llenar

Isa? Islas
30 de Julio del 2004
Amigo, LIKE es una instruccion para BUSCAR, no para FILTRAR, en todo caso:

mycol = ''

o tambien

LEN(mycol) = 0

ivancho72
30 de Julio del 2004
Mil gracias Isaías ya logré ejecutar la actualización

Isa? Islas
30 de Julio del 2004
Perfecto.....saludos