update con validación en varias tablas con sqlserver
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
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
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 ''
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 ''
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
Amigo, LIKE es una instruccion para BUSCAR, no para FILTRAR, en todo caso:
mycol = ''
o tambien
LEN(mycol) = 0
mycol = ''
o tambien
LEN(mycol) = 0
