Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como cuento/pagino esta query?

Estas en el tema de Como cuento/pagino esta query? en el foro de Mysql en Foros del Web. Hola muchachos, me veo en el aprieto de paginar un Select muy complicado y no se donde mandarle el COUNT(). A ver si alguien me ...
  #1 (permalink)  
Antiguo 18/03/2009, 16:12
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Pregunta Como cuento/pagino esta query?

Hola muchachos, me veo en el aprieto de paginar un Select muy complicado y no se donde mandarle el COUNT(). A ver si alguien me puede ayudar.

Gracias a unos post de este foro logré hacer que mi motor de búsqueda haga milagros... pero ahora me veo en el trabajo de paginar esos resultados, estaba usando el Paginator (un script en español para paginar, muy fácil), bueno yo ya lo modifiqué todo a mis necesidades... vamos al grano.

Código:
SELECT r.id, r.nombre, r.duracion, r.visitas FROM categorizado AS a 
INNER JOIN videos AS r ON a.id_video = r.id 
INNER JOIN categorias AS c ON c.id = a.id_cat 
WHERE a.id_cat IN (6, 52, 78, 140, 141, 157) 
GROUP BY a.id_video 
HAVING COUNT(a.id_cat)>4
Obviamente esta es una sentencia generada dinámicamente por PHP. Si alguien me ayuda se lo agradezco, mientras sigo probando.. pero ya no se donde mandarlo.
  #2 (permalink)  
Antiguo 19/03/2009, 10:27
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Como cuento/pagino esta query?

¿quieres saber la cantidad de registros? basados en esa sentencia?
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 19/03/2009, 14:22
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Como cuento/pagino esta query?

Si... Quiero saber cuantos registros genera, asi luego puedo paginarla... pero no se donde colocar el Count()... Si me ayudas te lo agradezco.
  #4 (permalink)  
Antiguo 19/03/2009, 15:42
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Como cuento/pagino esta query?

prueba de esta manera
Código sql:
Ver original
  1. SELECT COUNT(DISTINCT a.id_video ) AS total FROM categorizado AS a
  2. INNER JOIN videos AS r ON a.id_video = r.id
  3. INNER JOIN categorias AS c ON c.id = a.id_cat
  4. WHERE a.id_cat IN (6, 52, 78, 140, 141, 157)
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #5 (permalink)  
Antiguo 20/03/2009, 16:27
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Como cuento/pagino esta query?

Gracias, pero no! esa sentencia no me da el numero de filas resultantes, me da un numero que nada que ver... me da el total de registros de la tabla 'categorizado'. :S
  #6 (permalink)  
Antiguo 23/03/2009, 02:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como cuento/pagino esta query?

Sin saber exactamente lo que tienes y lo que buscas, te diría que si lo que quieres es el total de registros, probaras esto
SELECT COUNT(*) FROM (SELECT r.id, r.nombre, r.duracion, r.visitas FROM categorizado AS a
INNER JOIN videos AS r ON a.id_video = r.id
INNER JOIN categorias AS c ON c.id = a.id_cat
WHERE a.id_cat IN (6, 52, 78, 140, 141, 157)
GROUP BY a.id_video
HAVING COUNT(a.id_cat)>4)t1

No lo he probado
  #7 (permalink)  
Antiguo 25/03/2009, 10:32
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Como cuento/pagino esta query?

Cuando este en mi Pc lo pruebo y te digo, pero desde ya gracias xP
  #8 (permalink)  
Antiguo 25/03/2009, 14:45
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Respuesta: Como cuento/pagino esta query?

Hola
Tengo entendido que en las instrucciones SQL el SELECT que esta mas afuera es que muestra la informacion final, por lo tanto el contador deberia ir en esa linea es decir

Código PHP:
SELECT r.idr.nombrer.duracionr.visitasCOUNT(*) as cuantos
FROM categorizado 
AS 
INNER JOIN videos 
AS r ON a.id_video r.id 
INNER JOIN categorias 
AS c ON c.id a.id_cat 
WHERE a
.id_cat IN (65278140141157
GROUP BY a.id_video 
HAVING COUNT
(a.id_cat)>
espero no estar equivocado .... por ahora no puedo hacer pruebas...


EDIT:
Ahora bien si estas desde php u otro, es mas facil contar la cantidad de registros que te arroja la instruccion sin necesidad de poner el contador en la instruccion misma
por Ejemplo

Código PHP:
      $cuantos mysql_num_rows($result); 
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo

Última edición por omar1977; 25/03/2009 a las 14:47 Razón: justificar lenguaje
  #9 (permalink)  
Antiguo 25/03/2009, 15:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como cuento/pagino esta query?

Creo que omar1977 tiene razón y su primera propuesta debería funcionar.
  #10 (permalink)  
Antiguo 26/03/2009, 10:04
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Como cuento/pagino esta query?

Si teóricamente Omar1977 tiene rozón, pero prácticamente no.

hice correr le sentencia que el posteo:

Código:
SELECT r.id, r.nombre, r.duracion, r.visitas, COUNT( * ) AS cuantos
FROM categorizado AS a
INNER JOIN videos AS r ON a.id_video = r.id
INNER JOIN categorias AS c ON c.id = a.id_cat
WHERE a.id_cat
IN ( 6, 52, 78, 140, 141, 157 )
GROUP BY a.id_video
HAVING COUNT( a.id_cat ) >4
Código:
id 	nombre 	duracion 	visitas 	cuantos
73 	Super Babe 	00:06:00 	631 	5
111 	Mandy Plays with Her Red Toy 	00:09:00 	532 	6
170 	Heidi and her Silver Dildo at Come Meet Us 	00:03:00 	149 	5
590 	Alex rididng a thick brutal dildo 	00:04:00 	504 	5
1051 	Alissa 4 	00:03:00 	654 	5
2075 	Hailey Got Horny After Watching a Movie at Come Me... 	00:03:00 	377 	5
2156 	Mackenzie Teen Bitch fucks 	00:08:00 	492 	5
2938 	Young Brunette Kelly Dildos 	00:02:00 	372 	5
3002 	Horny Venus plays with her big dildo 	00:12:00 	724 	5
3551 	Busty Babe Solo 	00:02:00 	350 	5
3892 	Big dildos and brutal machine 	00:03:00 	121 	5
5154 	Veronica Hill Mirror Toy at Nubiles 	00:04:00 	519 	5
5662 	Linsey Dawn Mckenzie - Naughty Nurse 	00:04:00 	63 	5
5830 	Busty babe with a big black dildo 	00:03:00 	178 	5
6254 	Hottie Heidi Playing With Her Purple Dildo at Come... 	00:03:00 	157 	5
7791 	Glamourous babe spreading her shaved pussy and toy... 	00:02:00 	772 	5
7868 	Games - D 	00:14:00 	336 	5
7968 	Working Out By Boxing Makes Hailey Horny at Come W... 	00:03:00 	601 	5
8202 	Kream taking big dildos in the ass 	00:03:00 	263 	5
8572 	Laura Lion glass dildo anal teaser 	00:18:00 	366 	5

La sentencia me arroja 20 resultados y el campo "cuantos" dice que hay 5 eso es lo que no concuerda.

Y no me gustaría tener que contar los resultados con el PHP por que de esa forma consumiría muchos recursos son mas de 50.000 videos y no es bueno que PHP maneje eso, mas alla de que voy a mostrar 10 por pagina...

Por Favor!!
  #11 (permalink)  
Antiguo 26/03/2009, 10:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como cuento/pagino esta query?

¿Has probado la que te propuse yo?:
SELECT COUNT(*) FROM (SELECT r.id, r.nombre, r.duracion, r.visitas FROM categorizado AS a
INNER JOIN videos AS r ON a.id_video = r.id
INNER JOIN categorias AS c ON c.id = a.id_cat
WHERE a.id_cat IN (6, 52, 78, 140, 141, 157)
GROUP BY a.id_video
HAVING COUNT(a.id_cat)>4)t1

De todas formas, yo tengo una duda: ¿qué es ese a.id_cat y por qué buscas que el count del mismo sea mayor que 4, qué es eso exactamente? Tal vez ahí es donde se explicará la diferencia.

Última edición por jurena; 26/03/2009 a las 10:38
  #12 (permalink)  
Antiguo 26/03/2009, 10:32
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Como cuento/pagino esta query?

Sos un groso chabon!!
SELECT COUNT( * )
FROM (

SELECT r.id, r.nombre, r.duracion, r.visitas
FROM categorizado AS a
INNER JOIN videos AS r ON a.id_video = r.id
INNER JOIN categorias AS c ON c.id = a.id_cat
WHERE a.id_cat
IN ( 6, 52, 78, 140, 141, 157 )
GROUP BY a.id_video
HAVING COUNT( a.id_cat ) >4
)t1


COUNT(*) = 20


Funciona!!! Muchas Gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.