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

Problema al pagina Consulta que utiliza Group By

Estas en el tema de Problema al pagina Consulta que utiliza Group By en el foro de Bases de Datos General en Foros del Web. Hola amigos, el problema es el el siguiente, estoy haciendo especie de un Grid para mostrar los datos de una consulta, el Grip realiza una ...
  #1 (permalink)  
Antiguo 09/10/2008, 07:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Problema al pagina Consulta que utiliza Group By

Hola amigos, el problema es el el siguiente, estoy haciendo especie de un Grid para mostrar los datos de una consulta, el Grip realiza una paginación para hacer mas eficiente la respuesta. Lo estoy haciendo en PHP y POSTGRES utilizando ADODB para manipular la base de datos

La cuestión es que para paginar realizo dos consultas un SELECT count(*) y otro SELECT con los campos que en realidad necesito, estos son los query:

Este es el COUNT(*)

SELECT count(*) as total FROM mit.mit_consumos c, mit.mit_estacion_servicio es, mit.mit_combustible m WHERE (c.tipo_consumo='U' AND (c.fecha between '2008-08-01' AND '2008-10-09') AND c.id_est_serv=es.id_est_serv AND c.id_combustible=m.id_combustible) GROUP BY es.nombre_est_serv, m.nombre_combustible, c.costo_unit

Y este es el SELECT donde selecciono los campos que necesito:

SELECT SUM(c.cant_combustible) as suma, c.costo_unit, es.nombre_est_serv, m.nombre_combustible FROM mit.mit_consumos c, mit.mit_estacion_servicio es, mit.mit_combustible m WHERE (c.tipo_consumo='U' AND (c.fecha between '2008-08-01' AND '2008-10-09') AND c.id_est_serv=es.id_est_serv AND c.id_combustible=m.id_combustible) GROUP BY es.nombre_est_serv, m.nombre_combustible, c.costo_unit LIMIT 10

El problema en todo esto es que el primer SELECT me cuenta 4 registros, y el SELECT donde saco los datos solo quenera 2 registros, supongo que debe ser por los Group By.

Ahora mi pregunta es la siguiente, no existe alguna forma de evitarme el primer SELECT que cuenta, osea no existe alguna función que me retorne el numero de registros que me trae el segundo SELECT???

Gracias por su colaboración...
  #2 (permalink)  
Antiguo 09/10/2008, 09:14
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Respuesta: Problema al pagina Consulta que utiliza Group By

No es posible evitarte el primer select

Lo que tienes que hacer para que te cuente correctamente es usar DISTINC en vez de GROUP BY

Código sql:
Ver original
  1. SELECT
  2.      COUNT(DISTINCT  es.nombre_est_serv, m.nombre_combustible, c.costo_unit )
  3.       AS total
  4. FROM
  5.   mit.mit_consumos c,
  6.   mit.mit_estacion_servicio es,
  7.    mit.mit_combustible m
  8. WHERE
  9.   (c.tipo_consumo='U' AND (c.fecha BETWEEN '2008-08-01' AND '2008-10-09')
  10.    AND c.id_est_serv=es.id_est_serv AND c.id_combustible=m.id_combustible)

Otra cosa trata de Usar JOINs

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 09/10/2008, 17:46
 
Fecha de Ingreso: agosto-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Problema al pagina Consulta que utiliza Group By

Gracias por tu respuesta Genetix, ya resolvi, lo que hice fue lo siguiente, hago los 2 SELECT, pero para el primer SELECT utilizo RecordCount de ADOdb para que me diga cuantos registros tiene la consulta despues de haber hecho el Group By, porque antes me mostraba la cantidad de registros pero sin agrupar.

Saludos
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 14:39.