2

Hola tengo el siguiente query y quisiera modificar el registro finalizó de la persona en cuestión, en vez de "1" quiero cambiarlo a cero "0"

 select distinct 
Participantes.nombre,Participantes.apellido,Participantes.Cedula,
Preguntas.Descripcion,Respuestas.Contenido,cursoes.nombre,
CursoPlaneadoes.Numerocurso,Participantes.LugarDeTrabajo,
CursoPlaneadoParticipantes.Finalizo,Liders.Nombre, 
Liders.Apellidofrom Respuestas, CursoPlaneadoParticipantes, 
CursoPlaneadoes,Participantes,Cursoes, Preguntas, Liders
where ParticipanteId = '13212' and respuestas.preguntaid 
IN (160,161,162) and CursoPlaneadoParticipantes.Id = 
respuestas.CursoPlaneadoParticipanteId
and CursoPlaneadoParticipantes.Id = respuestas.CursoPlaneadoParticipanteId
and CursoPlaneadoes.Id = CursoPlaneadoParticipantes.CursoPlaneadoId
and Participantes.Id = CursoPlaneadoParticipantes.ParticipanteId
and Cursoes.Id = CursoPlaneadoes.CursoId
and CursoPlaneadoes.LiderId = Liders.Id
and Respuestas.PreguntaId = Preguntas.Id

introducir la descripción de la imagen aquí

1 Answers1

3

La forma casi "automática" de transformar un sentencia de consulta en una de actualización es simplemente modificar la parte del select de la misma, es decir:

update  CursoPlaneadoParticipantes
    set Finalizo = 0
    from    Respuestas, 
        CursoPlaneadoParticipantes, 
        CursoPlaneadoes,
        Participantes,
        Cursoes, 
        Preguntas, 
        Liders
    where   ParticipanteId = '13212' 
        and respuestas.preguntaid IN (160,161,162) 
        and CursoPlaneadoParticipantes.Id = respuestas.CursoPlaneadoParticipanteId
        and CursoPlaneadoes.Id = CursoPlaneadoParticipantes.CursoPlaneadoId
        and Participantes.Id = CursoPlaneadoParticipantes.ParticipanteId
        and Cursoes.Id = CursoPlaneadoes.CursoId
        and CursoPlaneadoes.LiderId = Liders.Id
        and Respuestas.PreguntaId = Preguntas.Id

Y sino puedes optar por una subconsulta:

update  CursoPlaneadoParticipantes
    set Finalizo = 0
    where Id in (
        select  CursoPlaneadoParticipantes.Id
            from    Respuestas, 
                CursoPlaneadoParticipantes, 
                CursoPlaneadoes,
                Participantes,
                Cursoes, 
                Preguntas, 
                Liders
            where   ParticipanteId = '13212' 
                and respuestas.preguntaid IN (160,161,162) 
                and CursoPlaneadoParticipantes.Id = respuestas.CursoPlaneadoParticipanteId
                and CursoPlaneadoes.Id = CursoPlaneadoParticipantes.CursoPlaneadoId
                and Participantes.Id = CursoPlaneadoParticipantes.ParticipanteId
                and Cursoes.Id = CursoPlaneadoes.CursoId
                and CursoPlaneadoes.LiderId = Liders.Id
                and Respuestas.PreguntaId = Preguntas.Id
        )

Comentarios aparte:

  • Tu consulta tiene repetido el argumento del where: and CursoPlaneadoParticipantes.Id = respuestas.CursoPlaneadoParticipanteId
  • Te recomiendo que dejes de usar los join implícitos y uses directamente la notación explícita de estos
Patricio Moracho
  • 54,367
  • 12
  • 35
  • 68