Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2004
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Consulta Con Order By

HOLA, ¿QUE TAL?,

EL PROGRAMA QUE REALIZO CONSTA DE 2 TABLAS QUE INTERVIENEN EN LA CONSULTA PROBLEMA Y QUE SON: LECTURAS Y CONTADORES, LO QUE YO PRETENDO CONSEGUIR ES SACAR EL CONTADOR QUE TIENE MAYOR NUMERO DE LECTURAS, PARA LO CUAL HAGO LO SIGUIENTE:

QUERY.CLOSE;
QUERY.SQL.TEXT:='select count(*)as num,contadores.numero from contadores,lecturas where contadores.depende='+cont+' and contadores.numero=lecturas.numero and patron=0 order by num desc';
QUERY.OPEN;

EL ERROR QUE DA ES: INVALID COLUMN REFERENCE NUM, LO QUE QUIERE DECIR QUE UN RENOMBRAMIENTO NO SE PUEDE UTILIZAR EN EL ORDER BY, PERO TAMPOCO PUEDO UTILIZAR EL COUNT(*).

¿SI ALGUIEN ME PUEDE AYUDAR Ó DECIR COMO PODER HACERLA?, YA QUE ESTA FORMA ES CORRECTA EN MYSQL PERO NO EN SQL QUE ES LO QUE UTILIZA INTERBASE.

MUCHAS GRACIAS.
  #2  
Antiguo 27-08-2004
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.

Lo primero, aconsejarte de que en el futuro no escribas en mayúsculas, está mal visto. Se asocia con el hecho de gritar y se considera de muy mala educación.

Respecto a la consulta, me extraña que funcione en MySQL, aunque seguro que no va a funcionar en ningún Servidor SQL serio : Oracle, SQL Server, DB2, ...

El estándar SQL indica que si se utilizan funciones de agregado (count es una), cualquier campo referido en la consulta, tiene que estar o bien dentro de una función de agregado, o en la agrupación utilizada.

Así pués, para que funcione esa consulta debes especificar una agrupación, para el campo que no está en la función de agregado.

Es decir :

select count(*) as num, numero
from contadores
where .......
group by numero
oder by 1 desc

Nota : He puesto una referencia ordinal en el order by (indicando que ordene por el primer campo de la consulta), en lugar de utilizar su nombre, debido a que no estoy seguro de que te acepte un alias.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
  #3  
Antiguo 27-08-2004
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
Cita:
Empezado por guillotmarc
me extraña que funcione en MySQL, aunque seguro que no va a funcionar en ningún Servidor SQL serio : Oracle, SQL Server, DB2, ...

El estándar SQL indica que si se utilizan funciones de agregado (count es una), cualquier campo referido en la consulta, tiene que estar o bien dentro de una función de agregado, o en la agrupación utilizada.
Ciertamente se trata de una extensión de MySql al SQL estándard pero, ¡la bd que esté libre de extensiones que lance la primera piedra! .

Por otra parte, el hecho de que MySql no cumpla (aún) completamente con el estandard SQL no es sinónimo de falta de seriedad, ¿o sí?

// Saludos
  #4  
Antiguo 27-08-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Otra sugerencia :

No hagas la misma pregunta en distintos Foros. Solo consigues hacer perder el tiempo a la gente. Horas después de haberte respondido yo, un compañero, ignorando el hecho, te ha respondido practicamente lo mismo en el otro hilo. Es extremadamente molesto, ha perdido inutilmente su tiempo, llevado al extremo puede provocar que algunos usuarios molestos no te ayuden más. Por ello te remito a la lectura de la guía de estilo de los Foros, siguiendo sus sugerencias seguro que obtendrás una experiencia mucho más positiva de los Foros.

NOTA: Voy a cerrar este hilo, si quieres seguir discutiendo el problema puedes hacerlo en el otro.

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



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 19:45:33.


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