Exists or not Exists that is the question
Exists or not Exists that is the question
Mi duda es más bien filosófica y es la siguiente: Si hago esta consulta:
En en caso de que no existiera para esa condicion un valor de campo, nulo o no, como podría hacer para que CAMPO devuelva 0. Si existiera un registro y CAMPO fuera NULL, la siguiente seria la solución (un NVL, igualmente, segun el motor de BD que use)
Pero si no existe registro, no devolverá nada, y yo quiero que me devuelva 0. Es posible? NOTA: sin usar COUNT. Saludos |
¡Hola!
No mencionas qué motor utilizas, pero en Firebird funciona bien esto:
El truco es hacer una unión exterior por la derecha con una tabla o cursor que tenga uno y sólo una fila. Saludos a cualesquiera. Al González. :) |
Cita:
Porque si analizamos lo real, si vos no tenes dinero, podriamos decir que tenés 0 monedas, con lo cual la nada (null) tendría un valor tangible. Al margén de si tendria sentido o no almacenar un valor 0 o inexistente de algo. Es una cuestión lógica, para ser pobre al menos hay que tener nada, con lo cual la nada tiene valor, asi sea nulo o despreciable, y asi cualquier combinación posible. Si bien pareciera ser una pregunta extraordinariamente rara, estoy enfocando el análisis hacia un desarrollo sobre el modelado de datos inexistentes o absurdos, sobre factibles relaciones combinacionales inexistentes, es un tema bastante complejo, y esta relacionado hacia el análisis genético. Es un modelo matemático en el cual, cuando no sabemos el resultado, al menos sabemos lo que NO puede ser, no se si me explico. Volviendo a la razón, estoy utilizando mySQL (4.1/5) Saludos |
en SQL Server podes hacer esto:
Nota: debe ir con esos parentesis, si los sacas da error de sintaxis, asi que copialo tal cual Saludos |
Cita:
ISNULL, sería como IFNULL, y hasta un DECODE o CASE comparando si es NULL, porque el NULL es el resultado de la existencia de un campo cuyo valor es nulo, pero si no existe registro? NULL sería siendo NULL. Ejemplo, si tengo 3 campos, y uno de ellos es NULL con esa funcion SI podria devolver 0, pero si no existe ninguno de los 3 campos? NULL es NULL, no puede ser NULL lo que no existe, he aquí el dilema en cuestión. Saludos |
no MaMu, probalo que eso anda, pero solo funciona cuando el select de adentro devuelve 1 sola fila o no devuelve ninguna fila (porque cuando no devuelve ninguna en SQL Server se puede tomar como NULL) si devuelve mas de una fila te va a dar error. Probalo
Saludos |
otra cosa a tener en cuenta, si trabajas con delphi, supongo que vas a tener una consulta con este SQL
al abrir la Query, si el valor de CAMPO es NULL o si la Query esta vacia (no se devolvieron filas como el caso que planteas) el valor de Query['CAMPO'] va a ser NULL en los dos casos, y ahi es donde tenes que aplicar la funcion isNull (en el codigo del Delphi) Por lo menos asi soluciono yo estos temas. Entonces te quedaria asi: Query.Open; variable:=isNull(Query['CAMPO'],0); Query.Close; Funciona tanto para cuando el campo es NULL o para cuando no hay resultado. Nota: La funcion isNull en Delphi no existe, asi que la tenes que hacer vos, seria algo asi:
|
javier7ar
Bueno pensándolo como lo expusiste es una buena idea. Lo voy a probar. Saludos |
La franja horaria es GMT +2. Ahora son las 01:36:49. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi