PDA

Ver la Versión Completa : Contar el numero de elementos de una consulta


papulo
26-09-2006, 17:13:59
Uso firebird, quiero hacer esto que se hace con

mysql_num_rows ($Cosulta);

¿Hay alguna instruccion directa o tengo que hacerlo de forma "artesanal"?

Saludos y hola de nuevo a todos, que he estado de vacaciones unas semanas y se ha notado.

PD: Edito para decir, que lo que hace es contarme el numero de filas que me tiene la consulta que he ejecutado.

Quiero que si me devuelve mas de 20 resultados no muestre mas por pantalla.

papulo
27-09-2006, 13:38:37
AAAARRIBAAAAA!!

Necesito ayuda,jops.

De los masters del universo (del PHP ...*cof! *cof! Dec! *cof!) que por aquí se que hay.


PD:En realidad de todos, pero cuando pienso en PHP, me viene Dec a la cabeza.

vtdeleon
27-09-2006, 14:25:25
Saludos

No estoy muy pulido, pero prueba con Ibase_fetch_row().

Casimiro Notevi
27-09-2006, 14:44:52
Si la consulta es de varios campos de una tabla y condicionada con where y lo que sea, entonces no podrás hacerlo.
Si son todos los campos, lo haces con un simple count.
Esa sentencia (mysql_num_rows ($Cosulta); (http://es.php.net/mysql_num_rows)) que indicas creo que lo que hace es ir al último registro para poder saber los que hay, es como si hicieras el select, luego haces un .last para ejecutar el recordcount y seguidamente vas al principio .first

roman
27-09-2006, 16:13:29
MySql tiene dos formas de mandar los resultados al cliente: de uno a uno o en bonche todos juntos. Hasta donde tengo entendido, PHP usa la segunda forma, de manera que siempre se sabe cuántos registros hay y por ello puede usarse mysql_num_rows. Si en IB noexiste tal función, me supongo que es porque sólo se mandan los resultados de uno a uno y por ello no puede saberse cuántos hay sino hasta que se han recorrido todos.

No entiendo muy bien porque Casimiro menciona que no se puede usarse count si hay una cláusula where o varios campos. Pienso que se puede saber la cantidad de registros haciendo una consulta COUNT previa con las mismas condiciones que la consulta original. Si bien es una consulta extra, normalmente debe ser bastante rápida y tratándse de un sólo dato el envío al cliente es muy rápido también así que imagino que casi no se notaría.

// Saludos

papulo
02-10-2006, 10:40:36
Al final, el tema era saber el numero de resultados que me devolvía la consulta realizada y si pasaba de 30, dejar de mostrarlos en pantalla, por lo que en la condicion while (($fila = ibase_fetch_object ($consulta)) or ($max_request<=30))
{
}
y arreando, cuando pasa de 30 registros deja de mostrarlos y directamente muestra un mensaje.

Gracias por la ayuda, la idea del count se me había pasado por la cabeza, me parecía la mas lógica aunque no se si la mas eficiente.

Casimiro Notevi
02-10-2006, 10:57:19
[...]
No entiendo muy bien porque Casimiro menciona que no se puede usarse count si hay una cláusula where o varios campos. Pienso que se puede saber la cantidad de registros haciendo una consulta COUNT previa con las mismas condiciones que la consulta original. Si bien es una consulta extra, normalmente debe ser bastante rápida y tratándse de un sólo dato el envío al cliente es muy rápido también así que imagino que casi no se notaría.
// Saludos
Sólo quería decir que si tiene ya un select "normal" con sus campos y condicionantes normales, no puede añadirle al mismo el count para hacerlo de una sóla vez.
No sé... por ejemplo:

select tar.*, per.codigoregistro
from tbTareas tar
inner join tbPersonal per on (per.codigo=tar.dependiente)
where tar.Codigo= 13
order by tar.fechainicio
Ahí no puedes añadir el count, tendría que ejecutar una sentencia adicional para contarlos.
Esto es suponiendo que yo hubiese entendido bien la pregunta. :)

dec
02-10-2006, 15:39:42
Hola,


De los masters del universo (del PHP ...*cof! *cof! Dec! *cof!) que por aquí se que hay.

PD:En realidad de todos, pero cuando pienso en PHP, me viene Dec a la cabeza.

:eek: :D :) :cool: