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 28-11-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Error con sentencia SQL

Hola amigos del foro, tengo una duda. Estoy trabajando con tablas paradox,
empleo un Tquery para realizar filtros, el resultado lo asigno a un data source y finalmente lo visualizo en una grilla.Tengo problemas en una de ellas, resulta que deseo obtener la cantidad de veces que se repite el campo (RUC) del cliente

este es mi codigo:

Código:
 
query1.SQL.Text:='select cclie,nombre,RUC,count(*) from CLIE01 group by RUC having count(*)>1';
 
query1.open;
Obtendre el codigo del cliente ,nombre del cliente, RUC y el numero de veces que se repite su RUC. Pero sale un error : "When Group by exists,every simple field in projectors must be in group by".
Por favor necesito saber cual es el error.....

Gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 28-11-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No puedes consultar los campos cclie, nombre si estos no has agrupado por estos:
Código SQL [-]
SELECT CCLIE, NOMBRE, RUC, COUNT(*) 
FROM CLIE01 
GROUP BY CCLIE, NOMBRE, RUC 
HAVING COUNT(*)>1
O si no han sido afectados por ninguna función de grupo:
Código SQL [-]
SELECT MAX(CCLIE), MIN(NOMBRE), RUC, COUNT(*) 
FROM CLIE01 
GROUP BY RUC 
HAVING COUNT(*)>1
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 28-11-2005
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
Siempre que utilices Group By, todos los campos utilizados en el Select, tienen que participar de la claúsula Group by y al menos realizar alguna operación de agrupamiento.
Código SQL [-]
  Select Nombre, Codigo, Max(fecha), Sum(saldo)
  from Facturas
  Group by nombre, codigo

Como puedes ver todos los campos o están en la claúsula Group by o afectados por una función de agrupamiento.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 28-11-2005
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
Se me adelantó Federico.

Brrrrrrrrrrr.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 28-11-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Gracias por atender mi duda, hize lo que me sugerieron, pero a pesar de existir RUC repetidos , no muestra resultados alguno.

Código:
 
query1.SQL.Text:='select cclie,nombre,rfc,count(*) from CLIE01 Group by rfc,cclie,nombre having count(*)>1';
query1.Open;
La sentencia sql se ve afectada, es es correcta ?

Gracias

Última edición por Coco_jac fecha: 28-11-2005 a las 20:01:39.
Responder Con Cita
  #6  
Antiguo 28-11-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Aqui estas consultando los rfc+cclie+nombre repetidos... ¿Existen?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 28-11-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Lo que necesito es obtener el nombre del cliente, codigo, ruc, y la cantidad de veces mayores que uno que apaarce su ruc

001 carlos 121222 2 algo asi.

Mi pregunta va que con la sentencia original obtengo resultados en Visual Fox pero al querer ejecutarlo desde delphi 7.0 sale error.

Como podria obtener lo que necesito, que necesitaria modificar el sentencia porque realmente con esa modificacion ya no busco solo ruc repetidos como dice federico

gracias
Responder Con Cita
  #8  
Antiguo 28-11-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Solo mostrando el RUC, y la cantidad de veces que se repite el RUC si obtengo resultado el cual concuerda correctamente, pero ademas de visualizar el RUC y la cantidad de veces que se repite, necesito visualizar el nombre y el codigo. cosa que no logro mostrar.......

Código:
query1.SQL.Text:='select rfc,count(*) from CLIE01 Group by rfc having count(*)>1';
Espero sus comentarios

Última edición por Coco_jac fecha: 28-11-2005 a las 21:03:19.
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 14:36:36.


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