SQL - Consulta ....

 
Vista:

Consulta ....

Publicado por Huginho (12 intervenciones) el 25/08/2006 18:30:57
HOLA FORISTAS: Tengo una consulta: Tengo 3 Tablas

PERSONAL
CodPersonal
.
.
.

POLIZA
CodPoliza
FechaVigIni
FechaVigFin
.
.
.

DETPOLIZA
CodPoliza
CodPersonal
.
.
.

Como a través de esas tablas puedo hacer la consulta de ver el "Personal que tiene vigente su Poliza" (SGBD: SQL Server 2000)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta ....

Publicado por Isaías (5072 intervenciones) el 25/08/2006 19:27:02
¿Porque columnas se unen PERSONAL y POLIZA?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Huginho (12 intervenciones) el 25/08/2006 19:36:02
La Union viene solo por el DetPoliza (CodPersonal)

Poliza no tiene relacion directa con Personal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Isaías (5072 intervenciones) el 25/08/2006 20:03:13
SELECT * FORM PERSONAL WHERE CodPersonal IN (SELECT CodPersonal FROM DETPOLIZA dp JOIN POLIZA po ON dp.CodPoliza = po.CodPoliza WHERE po.FechaVigIni >= GETDATE() AND po.FechaVigFin <= GETDATE())
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Huginho (12 intervenciones) el 25/08/2006 20:14:24
WHERE po.FechaVigIni >= GETDATE() AND po.FechaVigFin <= GETDATE())

Donde ... la FechaVigIni >= Hoy y FechaVigFin <= Hoy

Lo condicionamos a que sea hoy ¿ ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Isaías (5072 intervenciones) el 28/08/2006 19:12:08
La "logica" es, que si la fecha de INICIO de Vigencia y la fecha FINAL de vigencia, estran ENTRE el día de hoy, aun esta vigente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Huginho (12 intervenciones) el 25/08/2006 23:18:59
Respondiendome a mi pregunta, la consulta resultaria:

SELECT * FROM PERSONAL
WHERE CODPERSONAL IN
(SELECT CODPERSONAL
FROM DETPOLIZA
WHERE CODPOLIZA IN
(SELECT CODPOLIZA
FROM POLIZA
WHERE (MONTH(POLIZA.FECHAVIGFIN) >= MONTH(GETDATE())) AND (DAY(POLIZA.FECHAVIGFIN) > DAY(GETDATE()))))


En la cual uso como lógica, que si la Fecha de Vigencia Final (FechaVigFin) es mayor o igual que la fecha (mes) de hoy, además de que la fecha (día) de la Fecha de Vigencia Final sea mayor que el día de hoy, eso quiere decir que la Poliza aún está vigente.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Huginho (12 intervenciones) el 25/08/2006 23:53:58
Otra forma puede ser:

SELECT *
FROM PERSONAL, Poliza, DetPoliza
WHERE Personal.CodPersonal = DetPoliza.CodPersonal and Poliza.CodPoliza = DetPoliza.CodPoliza and (MONTH(POLIZA.FECHAVIGFIN) >= MONTH(GETDATE())) AND (DAY(POLIZA.FECHAVIGFIN) > DAY(GETDATE()))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta ....

Publicado por Isaías (5072 intervenciones) el 28/08/2006 19:08:04
Si son pocos registros, no tendras problema alguno con la comparacion de MES y DIA, de lo contrario, te sugiero que cambies a un formato ANSI, yyyymmdd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar