PDA

Ver la Versión Completa : sqlite query - Función Max


egesr
21/03/12, 14:22:17
Hola,

Tengo un problema con una consulta a base de datos sqlite.

La query es muy sencilla:

SELECT MAX (INIT_DATE) INIT_DATE FROM TABLE;

Cuando ejecuto la query, y la tabla está vacía, me devuelve un registro, cuando en realidad debería devolver cero registros.

He intentado ejecutar la consulta de dos maneras distintas:



cursor = db.query(true, "TABLE", new String (http://www.google.com/search?hl=en&q=allinurl%3AString+java.sun.com&btnI=I%27m%20Feeling%20Lucky)[] {"MAX(INIT_DATE) AS INIT_DATE"}, null, null, null, null, null, null);

cursor = db.rawQuery("SELECT MAX(INIT_DATE) AS INIT_DATE FROM TABLE", null);


Ninguna funciona, ambas me devuelven un registro.

¿Puede alguien ayudarme?

Muchas gracias

kriogeN
21/03/12, 15:31:03
No se quien te ha dicho que el MAX no devuelve nada si no hay registros, porque la función MAX (y la MIN, y casi cualquier función de grupo, incluido COUNT que devuelve 0) si no hay registros devuelve NULL.

egesr
21/03/12, 15:54:18
Hola,

Si me devolviera un cursor igual a NULL sería perfecto, pero el problema es que me devuele un objeto de tipo cursor distinto a nulo.

Si luego llamo al método getCount del cursor, me devuelve 1, cuando creo que debería devolverme cero.

Gracias

egesr
21/03/12, 16:23:00
Ok, me diste la pista.

Efectivamente cuando se utiliza una función de grupo como MAX, el cursor tiene un registro. Lo que hay que hacer es utilizar la función isNull para ver si el campo es nulo o no.

Gracias

tiotizo
21/03/12, 22:51:53
Ok, me diste la pista.

Efectivamente cuando se utiliza una función de grupo como MAX, el cursor tiene un registro. Lo que hay que hacer es utilizar la función isNull para ver si el campo es nulo o no.

Gracias


No se si llego tarde, para ayudarte, creo que si...

Pero bueno, queria comentar, que las funciones de grupo, tipo MAX, no se pueden mezclar con las que devuelven registros... por lo que recuerdo... Por lo menos en otros entornos de BBDD, como oracle...

en mysql.. no tengo ni idea si se puede. pero por logica no deberia.. porque una funcion de grupo devuelve 1 resultado, y el resto devuelve 1 o varios registros, por lo que es incompatible uno con lo otro.. no???

a lo mejor estoy ekivocado.. no se..?¿?!!!

Salu2