En una sola sentencia...!

01/04/2004 - 18:11 por AlejoR | Informe spam
Que tal grupo
En una tabla tengo unos registros que tienen un valor minimo y un valor maximo. Quiero controlar que si se inserta un nuevo registro verifique que no se cruce con otro ya existente, en ese rango
Lo solucioné utilizando un cursor e ir recorriendolo y preguntando...pero se podria hacer eso mismo en una sola sentencia SELECT..
Gracias people!!!

Preguntas similare

Leer las respuestas

#6 Javier Loria
03/04/2004 - 01:10 | Informe spam
Hola Alejo:
No creo que estes viendo pajaritos.
No se si se aplica, pero si los rangos fueran densos o sea que cubren
todo el rango podrias prescindir del 2do Valor. De forma que
"automaticamente" se vea el siguiente -1 como si fuera el valor del Rango.
Ejemplo: 1 Buena, 11 Regular, 21 Mala, 50 Fin.
Es posible calcular el rango de Buena, como el Limite inferior de
11-1 y el de Regular como 21-1 . Claro que este puede no ser deseable o
demasiado complejo, pero si quieres hacerlo seria:
=SELECT Indicadores.Interpretacion
, Indicadores.Indicador
, MIN(Siguiente.Indicador)
FROM Indicadores
JOIN Indicadores AS Siguiente
ON Indicadores.Indicador<Siguiente.Indicador
GROUP BY Indicadores.Interpretacion
, Indicadores.Indicador
= La alternativa de mantener ambos valores es mas sencilla pero requiere
mayor control de la integridad. Lo que podrias hacer es un CHECK pero
desgraciadamente SQL no permite referenciar otras filas u otras tablas en el
CHECK :(
Tendras que hacerlo con un TRIGGER INSTEAD OF o en el Procedimiento
Almacenado que agrega el registro. Usando la logica de Norman:
=IF EXISTS (SELECT * FROM Indicadores
JOIN Inserted
ON Inserted.MinIndicador BETWEEN
Indicadores.MinIndicador
AND Indicadores.MaxIndicador
OR Ins.MaxIndicador BETWEEN
Indicadores.MinIndicador
AND Indicadores.MaxIndicador
)
ELSE

=
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.





AlejoR escribio:
Entiendo lo que son indices unicos pero no veo como me solucionen la
duda.
La idea es la siguiente. Tengo unos indicadores que tienen una
interpretacion
Ej Indi 1 y las interpretaciones
Entre 1 y 10 Buena
Entre 11 y 20 Regular
Entre 20 y 50 Mala.

Se podrian crear otras interpretaciones o dividir las que ya estan,
pero una interpretacion entre 3 y 5 se cruza o entre 6 y 11 se cruza,
entr 40 y 55 se cruza y una entre 0 y 60 se cruza.
Un indice me cubriria solo unas convinaciones pero no todas.
Si se da el caso entre 1 y 5 el indice lo cubriria por el 1, si se da
el caso entre 6 y 10 el otro indice lo cubriria por el 10 pero si se
da el cado entre 4 y 6 ningun indice lo cubriria.

O estoy viendo pajaritos donde no los hay-.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida