Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Contar líneas de consulta.

Veamos. Tengo la siguiente consulta:
Código SQL [-]
SELECT `productos`.`descripcion` AS `descripcion`, SUM(`detalle_pedido`.`unidades`) AS `unidades`
  FROM `detalle_pedido`, `pedidos`, `productos`
 WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id`
   AND `detalle_pedido`.`productos_id`=`productos`.`id`
   AND '$Fecha1'<=`pedidos`.`fecha_orden` AND `pedidos`.`fecha_orden`<='$Fecha2'
 GROUP BY `detalle_pedido`.`productos_id`;
Esta me devuelve los datos que quiero, no hay problema. Lo que pasa es que también necesito saber cuántas líneas devuelve sin tener que obtener la consulta completa, ya que puede devolverme sopocientasmildos líneas, y como es para una web la cosa se puede eternizar. Lo que busco es "paginar" así que en la consulta definitiva utilizaré "LIMIT", de ahí que quiera contar las líneas.

En definitiva, me gustaría sacar algo parecido a:
Código SQL [-]
SELECT COUNT(*)
 WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id`
   AND `detalle_pedido`.`productos_id`=`productos`.`id`
   AND '$Fecha1'<=`pedidos`.`fecha_orden` AND `pedidos`.`fecha_orden`<='$Fecha2'
pero no me sale. Lo he intentado de varias maneras pero no consigo que me devuelva lo que quiero, porque o me devuelve un valor mayor al esperado o devuelve varias líneas con valores rarísimos .

El problema es que quiero saber cuántos "detalle_pedido.productos_id" distintos hay.

No sé si me he explicado. Si no quedó claro, pregunten que intentaré aclararlo. Gracias.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 16-06-2008 a las 13:01:24.
Responder Con Cita
  #2  
Antiguo 16-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Nuño, te devuelve los valores raros porque estas haciendo un count sobre cada grupo. Has hecho la prueba de hacer un count sobre el resultado de tu consulta.

Código SQL [-]
SELECT count(*)
From ( SELECT `productos`.`descripcion` AS `descripcion`, SUM   
            (`detalle_pedido`.`unidades`) AS `unidades`
  FROM `detalle_pedido`, `pedidos`, `productos`
  WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id`
           AND `detalle_pedido`.`productos_id`=`productos`.`id`
           AND '$Fecha1'<=`pedidos`.`fecha_orden`
           AND `pedidos`.`fecha_orden`<='$Fecha2'
  GROUP BY `detalle_pedido`.`productos_id`)

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 16-06-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Pues eso es lo que quiero hacer, el problema es que me devuelve un error:
Cita:
Empezado por MySQL
#1248 - Every derived table must have its own alias
Evidentemente he puesto dos fechas válidas

Yo de SQL sé lo justo...

[edito] Olvidé mencionar que utilizo MySQL, por si sirve de algo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 16-06-2008 a las 15:03:43.
Responder Con Cita
  #4  
Antiguo 16-06-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
¿No debería ser así?,:

Código SQL [-]
SELECT COUNT(SELECT `productos`.`descripcion` AS `descripcion`, SUM(`detalle_pedido`.`unidades`) AS `unidades`
  FROM `detalle_pedido`, `pedidos`, `productos`
 WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id`
   AND `detalle_pedido`.`productos_id`=`productos`.`id`
   AND '$Fecha1'<=`pedidos`.`fecha_orden` AND `pedidos`.`fecha_orden`<='$Fecha2'
 GROUP BY `detalle_pedido`.`productos_id`;
),`productos`.`descripcion` AS `descripcion`, SUM(`detalle_pedido`.`unidades`) AS `unidades`
  FROM `detalle_pedido`, `pedidos`, `productos`
 WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id`
   AND `detalle_pedido`.`productos_id`=`productos`.`id`
   AND '$Fecha1'<=`pedidos`.`fecha_orden` AND `pedidos`.`fecha_orden`<='$Fecha2'
 GROUP BY `detalle_pedido`.`productos_id`;

Por cierto, no mencionaste si estás trabajando con PHP .
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 16-06-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Olvidé dar las gracias a Caro por su aportación. Espero que no te molestes

@ecumene, pues gracias también pero no, me devuelve error de sintaxis en la séptima línea (justo en el "), `productos`,..."). Gracias de todas formas.

Y sí, estoy utilizando PHP pero el problema está en el SQL. Evidentemente las pruebas las estoy haciendo diréctamente en la base de datos y poniendo fechas reales. Así que por ahí no creo que esté el problema.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 16-06-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Bueno no se pierde nada con el intento ¿NO?
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 16-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo nuño, el ejemplo que puse si funciona, pero en Firebird. Mysql también maneja subconsultas en el From, solo que tienes que darle un alias al resultado, revisa esta pagina http://dev.mysql.com/doc/refman/5.0/...med-views.html

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 16-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
No habia visto el error que pusiste "
#1248 - Every derived table must have its own alias
", parece que el error es justamente por el alias que le falta a la consulta.

Código SQL [-]
SELECT count(*)From ( SELECT `productos`.`descripcion` AS `descripcion`, 
           SUM (`detalle_pedido`.`unidades`) AS `unidades`
           FROM `detalle_pedido`, `pedidos`, `productos`
           WHERE `detalle_pedido`.`pedidos_id`=`pedidos`.`id` 
           AND `detalle_pedido`.`productos_id`=`productos`.`id`
           AND '$Fecha1'<=`pedidos`.`fecha_orden`
           AND `pedidos`.`fecha_orden`<='$Fecha2'
           GROUP BY `detalle_pedido`.`productos_id`) AS Resultado

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 16-06-2008 a las 16:30:55.
Responder Con Cita
  #9  
Antiguo 16-06-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Gracias [Caro].

Ahora me sale error porque dice que la función SUM no existe, pero creo que eso puedo solucionarlo. Si no lo consigo, ya preguntaré.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #10  
Antiguo 16-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que en lugar de la subconsulta- que podría ser muy tardada- podrías usar found_rows en combinación con SQL_CALC_FOUND_ROWS en la consulta. Con eso se supone que puedes saber cuántos registros hay en total sin no se usara LIMIT, de manera que puedes usarlo para paginar.

// Saludos
Responder Con Cita
  #11  
Antiguo 16-06-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¿Y por qué no me lo has dicho antes?

Gracias roman, lo tendré en cuenta.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Utilidad para contar lineas de código Alexander Varios 10 18-10-2006 00:14:55
Contar el numero de elementos de una consulta papulo PHP 7 02-10-2006 15:39:42
Contar líneas en un QRDBText YaninaGenia Impresión 6 05-12-2005 13:49:04
Contar Lineas de Codigo Logicas y Fisicas bustio OOP 9 15-11-2005 22:28:58


La franja horaria es GMT +2. Ahora son las 22:37:23.


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
Copyright 1996-2007 Club Delphi