Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Comparando rangos de numeros

Estas en el tema de Comparando rangos de numeros en el foro de SQL Server en Foros del Web. Buen día, alguno de ustedes me podria orientar con lo siguiente: tengo un aplicativo que hace inserts a la bd pero en este manejo un ...
  #1 (permalink)  
Antiguo 28/07/2014, 10:29
 
Fecha de Ingreso: mayo-2013
Mensajes: 17
Antigüedad: 11 años
Puntos: 0
Pregunta Comparando rangos de numeros

Buen día, alguno de ustedes me podria orientar con lo siguiente:
tengo un aplicativo que hace inserts a la bd pero en este manejo un numero de dias inicial y final necesario.

tengo esto en la bd insertado ya

id | nombre| d_inicio|d_fin|
---------------------------
1 |tipo 1|300|600 |
---------------------------
2 |tipo 1|800 | 900 |
---------------------------
3 |tipo 1|950 | 970 |

lo que me piden es poder insertar un tipo 1(nombre) pero tomando en cuenta los dias de inicio y dia fin, es decir si quisiera insertar un tipo 1 de la siguiente forma me deberia dejar

id | nombre| d_inicio|d_fin|
---------------------------
4 |tipo 1|901 | 949 |


mientras que si tratara de insertar

id | nombre| d_inicio|d_fin|
---------------------------
5 |tipo 1|900 | 949 |

porque es igual al numero inicial de otra temporalidad del mismo tipo, no se sialguien sabe como evaluar esto que me pueda orientar, ya que si logro evaluar pero solamente que sea mayor a los dias de inicio o fin, pero no si existen 2 tipos y exista una brecha entre estos dos.

esta es parte de la consulta

Código:
IF(( SELECT COUNT(*) AS Conteo
           FROM mi_tabla a
         WHERE (a.dias_ini >=@i_dias_ini OR 
                        a.dias_fin >= @i_dias_ini OR
                        a.dias_ini >= @i_dias_fin OR 
                        a.dias_fin >= @i_dias_fin))>0)
si devuelve un conflicto envio un 0 y un mensaje que existe conflicto
sino devuelve 1 y otro mensaje que si se inserto

Gracias de antemano, saludos.
  #2 (permalink)  
Antiguo 28/07/2014, 16:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Comparando rangos de numeros

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. tipo VARCHAR(20),
  5. inicio INT,
  6. fin INT
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1,'tipo 1',300,600)
  11. INSERT INTO #temp VALUES (2,'tipo 1',800,900)
  12. INSERT INTO #temp VALUES (3,'tipo 1',950,970)
  13.  
  14.  
  15. DECLARE @inicio INT
  16. DECLARE @fin INT
  17. SET @inicio=240
  18. SET @fin=250
  19.  
  20. IF (
  21. SELECT COUNT(test) + COUNT(test2) FROM (
  22. SELECT CASE WHEN @inicio BETWEEN inicio AND fin THEN 'si' ELSE 'no' END AS test,
  23. CASE WHEN @fin BETWEEN inicio AND fin THEN 'si' ELSE 'no' END AS test2
  24. FROM #temp ) AS t1 WHERE test='si' OR test2='si')>=1
  25. print 'Rango no disponible'
  26. ELSE
  27.     INSERT INTO #temp VALUES (1,'tipo 1',@inicio,@fin)

Con algo como eso obtienes lo que necesitas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 29/07/2014, 07:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Comparando rangos de numeros

Ni un feedback??? bueno asi es aqui en el foro :(
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 29/07/2014, 08:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Comparando rangos de numeros

Hacer el bien, sin mirar a quien.....dejad que ellos se acerquen a mi, porque de ellos será el reino del SQL
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 29/07/2014, 08:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Comparando rangos de numeros

Cita:
Iniciado por iislas Ver Mensaje
Hacer el bien, sin mirar a quien.....dejad que ellos se acerquen a mi, porque de ellos será el reino del SQL
:r isa:

ahora si me hizo reir amigo
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 29/07/2014, 11:09
 
Fecha de Ingreso: mayo-2013
Mensajes: 17
Antigüedad: 11 años
Puntos: 0
Respuesta: Comparando rangos de numeros

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. tipo VARCHAR(20),
  5. inicio INT,
  6. fin INT
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1,'tipo 1',300,600)
  11. INSERT INTO #temp VALUES (2,'tipo 1',800,900)
  12. INSERT INTO #temp VALUES (3,'tipo 1',950,970)
  13.  
  14.  
  15. DECLARE @inicio INT
  16. DECLARE @fin INT
  17. SET @inicio=240
  18. SET @fin=250
  19.  
  20. IF (
  21. SELECT COUNT(test) + COUNT(test2) FROM (
  22. SELECT CASE WHEN @inicio BETWEEN inicio AND fin THEN 'si' ELSE 'no' END AS test,
  23. CASE WHEN @fin BETWEEN inicio AND fin THEN 'si' ELSE 'no' END AS test2
  24. FROM #temp ) AS t1 WHERE test='si' OR test2='si')>=1
  25. print 'Rango no disponible'
  26. ELSE
  27.     INSERT INTO #temp VALUES (1,'tipo 1',@inicio,@fin)

Con algo como eso obtienes lo que necesitas :)
muchas gracias, justamente lo que necesitaba. disculpa que hasta ahora pero estaba revisando otras consultas.

Saludos

Etiquetas: intervalo, mayor, menor, sql-server-2008
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:20.