Ver Mensaje Individual
  #11 (permalink)  
Antiguo 09/10/2015, 14:26
X_fran
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Evitar solapamiento de periodos

Esta es la query, evidentemente me falla la lógica.

Código SQL:
Ver original
  1. IF EXISTS(
  2.         SELECT dbo.liquidacion.id_liq
  3.         FROM dbo.liquidacion INNER JOIN [dbo].[documento] ON [dbo].[liquidacion].[id_liq] = [dbo].[documento].[id_documento]
  4.         WHERE ([dbo].[documento].[zafra_id] = @zafraId)
  5.         AND
  6.         (
  7.             (
  8.                    
  9.                 ([dbo].[liquidacion].[fecha_inicio] >= @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] <= @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
  10.             )
  11.             OR
  12.             (
  13.                 ([dbo].[liquidacion].[fecha_inicio] = @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] = @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
  14.             )
  15.             OR
  16.             (
  17.                 ([dbo].[liquidacion].[fecha_inicio] <= @periodoIni) AND ([dbo].[liquidacion].[fecha_fin] BETWEEN @periodoFin AND @periodoFin) AND ([dbo].[liquidacion].[productor] = @productorId)
  18.             )          
  19.         )
  20.     )  
  21.     BEGIN
  22.         RAISERROR('Ya existe una liquidación para el productor %s dentro del periodo seleccionado.', 16, 1, @nombreProductor )
  23.         GOTO quitarConRollBack 
  24.     END

Última edición por gnzsoloyo; 09/10/2015 a las 14:35