![]() |
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. |
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. |
Cita:
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 |
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. |
La franja horaria es GMT +2. Ahora son las 22:09:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi