Tengo problemas con mi base de datos y las fechas y ordenación de los contratos
Disculpa hace unos días me ayudastes en este caso, y parecía que todo iba muy bien. Pero llegue a un punto de contradicción.
- El caso es el siguiente: Cuando yo en mi bd agrego un nuevo Contrato Proyecto, y le pongo la fecha de termino (por ejemplo: 07/07/2010, siendo esa fecha menor a la Actual). Entonces el personal asignado a este contrato podría ser llamado para otro contrato proyecto posterior (por ejemplo con una fecha de termino de 07/08/2010). Pero no da.
- Esto fue lo que me ayudastes:
create proc sp_actualiza_contrata
(
@fecha varchar(8)
)
As
update personal
set personal_estado='Disponible'
where personal_id in (
select personal_id from asignacion where cproyecto_id in
(select cproyecto_id from contratoproyecto where cproyecto_fechatermino <=@fecha group by cproyecto_id))
go
--Select * from personal
--update personal set personal_estado='Ocupado'
- Pero quisiera que me evalúe desde el ultimo contrato hasta el primer contrato (con respecto a su id). Por ejemplo: Que comience evaluando Contrato_7, Contrato_6, ..., Contrato_1 y así poder ir actualizando los estados del personal tomando como referencia el ultimo contrato que siempre sera la fecha de termino mayor.
- Espero me hayas entendido, espero tu ayuda. Gracias...
Todo parece ser que aquí estaría el cambio:
(select cproyecto_id from contratoproyecto where cproyecto_fechatermino <=@fecha group by cproyecto_id))
¿Cómo hacer que me comience evaluando desde el ultimo contrato al primero?
- El caso es el siguiente: Cuando yo en mi bd agrego un nuevo Contrato Proyecto, y le pongo la fecha de termino (por ejemplo: 07/07/2010, siendo esa fecha menor a la Actual). Entonces el personal asignado a este contrato podría ser llamado para otro contrato proyecto posterior (por ejemplo con una fecha de termino de 07/08/2010). Pero no da.
- Esto fue lo que me ayudastes:
create proc sp_actualiza_contrata
(
@fecha varchar(8)
)
As
update personal
set personal_estado='Disponible'
where personal_id in (
select personal_id from asignacion where cproyecto_id in
(select cproyecto_id from contratoproyecto where cproyecto_fechatermino <=@fecha group by cproyecto_id))
go
--Select * from personal
--update personal set personal_estado='Ocupado'
- Pero quisiera que me evalúe desde el ultimo contrato hasta el primer contrato (con respecto a su id). Por ejemplo: Que comience evaluando Contrato_7, Contrato_6, ..., Contrato_1 y así poder ir actualizando los estados del personal tomando como referencia el ultimo contrato que siempre sera la fecha de termino mayor.
- Espero me hayas entendido, espero tu ayuda. Gracias...
Todo parece ser que aquí estaría el cambio:
(select cproyecto_id from contratoproyecto where cproyecto_fechatermino <=@fecha group by cproyecto_id))
¿Cómo hacer que me comience evaluando desde el ultimo contrato al primero?
1 respuesta
Respuesta de hakuario
1