Hola, antiguamente en la V5R4, cuando escribiamos una sentencia SQl que utilizaba GROUP BY, el sistema solo ordenaba por los campos definidos dentro del GROUP BY, ahora , en la V7R1, no lo hace, y me obliga que escriba el ORDER BY y a continuacion los campos de Ordenamiento, cabe aclarar que el GROUP BY ordenado lo puedo hacer m oracle express, sqlserver express, sql de VFP y en todos los casos se ejecuta igual que en V5R4.
Alguien me podria confirmar esto, o es un problema con mi instalacion de V7R1
Por favor, si me pueden contestar con copia a victor.velardez@gmail.com
Muchas Gracias
Software/Hardware used:
i5 and V7R1
ASKED:
August 23, 2012 6:58 PM
26021962: Voy a traducir lo que me parece entender de tu pregunta al Inglés, ya que de lo contrario dudo mucho que recibas una respuesta.
Por otro lado, no enviamos respuestas a correo electrónico. Todo se publica aquí en el sitio.
Saludos,
Here’s the translated text:
“On V5R4, when we wrote queries that included the GROUP BY clause, the system automatically ordered the results by the columns included in the GROUP BY, but now in V7R1, it doesn’t, and I need to explicitly add an ORDER BY clause. It is worth mentioning that this automatically ordered GROUP BY query can be done in Oracle express, SQL Server express, VFP, and it behaves as in V5R4.
Could someone please confirm if this is the new expected behavior ? Or could it be a problem with my V7R1 installation ?
Thanks.”
Thanks Carlos
Thanks Carlos
Everything between Hola and Muchas Gracias was a bit muddled.
In V5R4 it certainly looks like it orders on the Group By. That is until there is more than one group by field, then it seems to be rather random until the order by clause is used. In general selects deliver the data in a random order.
Phil
On V5R4 and every version and release, a result set only has a guaranteed order if an ORDER BY clause is specified. It is always possible for a result set to have an order that matches a GROUP BY, but it should always be considered a lucky accident.
And if it happens less under i 7.1, it’s most likely due to code changes to bring more of the SQL standard and new extensions into the product. It shouldn’t affect anything simply because statements should have always had an ORDER BY clause if ordering was desired.
Tom
26021962, estas son las respuestas recibidas: Respuesta de philpl1jb:
“En V5R4 ciertamente parece que el resultado se ordena por el GROUP BY. Eso es así hasta que hay mas de un campo en el GROUP BY, entonces parece ordenar de forma aleatoria, hasta que la cláusula ORDER BY es usada. En general, los SELECTS devuelven los datos en orden aleatorio.”
Respuesta de TomLiotta:
En V5R4 y cualquier otra version, un resultado solamente tiene un order garantizado si una cláusula ORDER BY es especificada. Siempre es posible que un resultado tenga un orden que concuerde con el GROUP BY, pero eso debería siempre se considerado como un accidente de suerte.
Y si pasa menos en i 7.1, es muy probable que sea debido a cambios en el código para agregar mas del standard de SQL y nuevas extensiones al producto. Esto no debería afectar nada, simplemente porque las sentencias siempre deberían haber tenido una clásula ORDER BY si se deseaba recibir el resultado en un orden específico”
—————
Mi opinión personal:
Concuerdo con Phil y Tom. Si un orden específico es necesario, entonces es una buena práctica siempre especificarlo por medio de un ORDER BY, aunque sin incluirlo el resultado sea devuelto en el orden deseado.
En la compañía para la que yo trabajo se hizo una migración de Oracle 8i a 11g hace unos meses, y algunas aplicaciones tuvieron ciertos problemas porque las consultas que no tenían especificado un ORDER BY ahora en Oracle 11g devolvían el resultado en diferente orden.
Lo correcto es anticiparse a ese tipo de cambios, y siempre especificar el orden requerido.
My previous comment, which included Phil’s and Tom’s answers’ translation to Spanish seems to be in limbo. It is visible from the outside but is missing here.