![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Creo saber por que te sale asi.
(Soy un CHUTO explicando pero ahi vamos...) Segun mi interpretacion estas diciendo que traiga cada registro que cumpla "EG.COD_ESTADO_SEG = 1", si ese registro no cumpel con esa condicion pues con esta ==> SEG.COD_ESTADO_SEG between 1 and 2" Si evaluas registro por registro veras qeu va a traer tando 1 como 2.
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
|
#2
|
||||
|
||||
|
Cita:
Cita:
Si yo quito la segunda expresión, es decir el Or, me devuelva los registro que cumplen la condición 1, la idea es que si yo entrego un valor inexistente (lo hago de forma adrede a través de la aplicación) me devuelva registros que contenga 1 y 2
__________________
No todo es como parece ser... |
|
#3
|
||||
|
||||
|
en la sentencia:
de nada te sirve tener "Campo = 1" porque de igual manera se esta haciendo la misma comparación en el "between 1". Al poner : "between 1 and 2" es lo mismo que si pusieras: "campo = 1 or Campo=2" y al utilizar el operador Or, es como si solo estuvieras evaluando el between. Es decir, a mi parecer, la instrucción anterior, daría exactamente los mismo resultados que
Cualquier valor diferente de 1 ó 2, no se mostrará como resultado de la consulta.
__________________
|
|
#4
|
||||
|
||||
|
Cita:
Hasta Luego y gracias por su atención
__________________
No todo es como parece ser... |
|
#5
|
||||
|
||||
|
Cita:
Por un lado quieres obtener:
Pero cuando no se cumple esa relación quieres que la relación se establezca con los vigentes?... yo pondría un "OR NOT EXISTS (RELACIÓN) AND ESTADO = 'VIGENTE'"
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Última edición por vtdeleon fecha: 21-07-2006 a las 02:59:31. |
|
#6
|
|||
|
|||
|
Estas mezclando dos conceptos diferentes, que se evalue o no la segunda comparacion es un tema de optimizacion del compilador o interprete que sea, una optimizacion permite simplemente que el codigo se ejecute un poco mas rapido, pero esto no tiene nada que ver con el resultado, es decir
el resultado de una comparacion o consulta va a ser el mismo independientemente de que se evaluen los dos resultados o no. Si hacemos "A o B", y al interpretar el resultado vemos que A es VERDADERO podriamos evaluar B o no, pero ya sabemos que el resultado final va a ser VERDADERO valga lo que valga B, de modo que muchos compiladores por tema de acelerar la ejecucion y no hacer comprobaciones superfluas, siemplemente ahi paran y ya no evaluan B porque no hace falta, ya sabemos que el resultado final es VERDADERO independientemente de lo que valga B. La explicacion en ingles de "Short-Circuit Evaluation", no tiene que ver con que los resultados en tu caso vayan a ser diferentes, has interpretado mal esa explicacion. Ese texto se limita a explicar un caso muy concreto que de rebote produce el hecho de no evaluar B, y es que si en B existe una operacion matematica que puede dar error (como una division por cero), en el caso de short-circuit evaluation si A ya es verdadero, la operacion B no daria error porque B no se evalua. No es que de resultados distintos es que se pararia el programa con un error o excepcion de division por cero en el caso de que se evaluase B. Pero este es un caso "extremo" por asi decirlo que no tiene que ver con la logica del operador OR, en definitiva un OR es un OR y siempre dara el mismo resultado independientemente de que el compilador o el interprete lo procesen de una forma u otra. Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Operador LIKE en access | maurogambo | Tablas planas | 5 | 06-09-2006 14:20:42 |
| Que pasa con el operador @? | Turboleta | Varios | 3 | 12-01-2006 20:50:35 |
| Operador IS | Aztaroth | C++ Builder | 8 | 04-08-2004 14:44:27 |
| Operador *= | febito | SQL | 1 | 09-06-2004 21:26:43 |
| Operador @ | Tanix | PHP | 2 | 27-10-2003 10:07:14 |
|