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 06-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
Question Clientes con Total Facturacion >= 3000

Hola al grupo:
Necesito hacer una consulta para saber que clientes tienen más de 3.000 € de facturación entre dos fechas(el tipico resumen anual).
El caso es que estoy bloqueado, no veo la consulta...

Ayuda: Tengo una típica tabla de Clientes y otra típica tabla de Facturas, con un campo Total.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 06-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Puedes hacer algo de este estilo :

Código:
select CLI_ID, CLI_NOMBRE, CLI_APELLIDOS
from CLIENTES
     inner join FACTURAS on FAC_CLI_ID = CLI_ID and FAC_FECHA between :DESDE and :HASTA
group by CLI_ID, CLI_NOMBRE, CLI_APELLIDOS
having sum(FAC_TOTAL) > 3000
Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 06-11-2003 a las 14:02:06.
Responder Con Cita
  #3  
Antiguo 06-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
esto... Marc, te ha faltado poner en SUM en el SELECT :p

Código:
select CLI_ID, CLI_NOMBRE, CLI_APELLIDOS, SUM(FAC_TOTAL)
from CLIENTES
     inner join FACTURAS on FAC_CLI_ID = CLI_ID and FAC_FECHA between :DESDE and :HASTA
group by CLI_ID, CLI_NOMBRE, CLI_APELLIDOS
having sum(FAC_TOTAL) > 3000
Responder Con Cita
  #4  
Antiguo 06-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

La verdad es que no es imprescindible para que funcione la consulta. Aunque ciertamente, probablemente también necesitará incluir en la relación de clientes el importe acumulado.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 06-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
Question

Gracias por el interes mostrado.
Acabo de probar,,,pero:

Dynamic SQL Error
SQL error code = -104
invalid column reference

siempre que añado la clausula "sum(F.Total)"
Responder Con Cita
  #6  
Antiguo 06-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Tu base de datos no debe soportar la cláusula HAVING, ¿ que base de datos utilizas ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 06-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
InterBase 6.0, con SQL dialect 1 y si cambio a 3 idem.
Responder Con Cita
  #8  
Antiguo 06-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Es curioso porqué Firebird 1 si ejecuta perfectamente esa sentencia, y Firebird 1 es practicamente un hermano gemelo de Interbase 6.0. (Aunque las pruebas las he hecho con Dialecto 3).

¿ Porque no sustituyes Interbase 6.0 por Firebird 1.03 ?. Estas dos bases de datos són tan parecidas (Firebird es una evolución open source generada a partir del código de Interbase 6.0 liberado por Borland en su momento), que muy probablemente no tengas que tocar ni una sola linea de código.

Ademas de ejecutar correctamente agrupaciones con HAVING, Firebird 1.03 es más estable que Interbase 6.0 puesto que tiene muchos bugs corregidos, además de caracteristicas adicionales, como por ejplo. consultas SELECT FIRST n ....., etc. ...

http://sourceforge.net/project/showf...?group_id=9028

Bájate Firebird 1.03 para Win32 (NOTA : ya está disponible una versión casi final de Firebird 1.5, pero aunque es más rápido y lleva bastantes características nuevas, no te lo recomiendo inicialmente puesto que seguramente tendrías que modificar tu programa por problemas de compatibilidad con IB 6.0).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 06-11-2003 a las 19:07:35.
Responder Con Cita
  #9  
Antiguo 06-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
Voy a probarlo,,, gracias x1.000
Responder Con Cita
  #10  
Antiguo 10-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
Unhappy

Algo tengo que estar haciendo mal.

select C.Cliente, C.Titulo, SUM(F.TOTAL)
from CLIENTES C
inner join FACTURAS_CLIENTES F on F.Cliente = C.Cliente
group by C.Cliente
having sum(F.TOTAL) > 3000

sigue sin funcionar.
Responder Con Cita
  #11  
Antiguo 10-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
¿ Lo has probado con Firebird 1.03 ?

¿ Te da el mismo error u otro ?

El error te indicaba que no reconocia la columna, ¿ estas seguro que el campo se llama así ?, prueba primero la consulta sin el HAVING.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #12  
Antiguo 10-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
select C.Cliente, C.Titulo, SUM(F.TOTAL)
from CLIENTES C
inner join FACTURAS_CLIENTES F on F.Cliente = C.Cliente
group by C.Cliente, cTitulo
having sum(F.TOTAL) > 3000

Un Saludo.

Estoy ya te lo habia dicho Marc y Cadetill.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #13  
Antiguo 10-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Sólo una nota aclaratoria, recuerda que en la cláusula Group By han de ir los mismos campos que en la Select menos los de agregado
Responder Con Cita
  #14  
Antiguo 10-11-2003
Producto77 Producto77 is offline
Miembro
 
Registrado: jun 2003
Posts: 35
Poder: 0
Producto77 Va por buen camino
Talking

Es lo que tiene la ignorancia.
Gracias x 1.000 (otra vez)
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


La franja horaria es GMT +2. Ahora son las 21:58:27.


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