Oracle - Error!! En DISTINCT junto con ORDER BY

 
Vista:

Error!! En DISTINCT junto con ORDER BY

Publicado por Lorena Rojas (8 intervenciones) el 20/04/2007 04:00:40
Hola, que tal, estube haciendo algunas pruebas con el DISTINC y el ORDER BY y paso lo siguiente.

Teniendo una tabla de nombre 'tabla' con dos campos, nombre y apellido, con los siguientes querys:

select nombre from prueba order by apellido asc
Este query lo ejecuta sin problemas, aunque en alguna parte lei que teoricamente marcaria un error ya que el campo a ordenar no esta en los campos a mostrar.

el otro es:
select distinct nombre from prueba order by apellido asc
Con este query me marco un error, dice que no es una expresion obtenida bajo select, pero porque marca error solo con agregarle el distinct???

y por ultimo:
select distinct nombre as apellido from prueba order by apellido asc
Aqui ya no marca el error porque se me ocurrio agregarle el alias al campo.

Las preguntas son, el campo a ordenar (ORDER BY) tambien debe estar delante del SELECT? y porque con agregarle el DISTICT truena?

Saludos,.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error!! En DISTINCT junto con ORDER BY

Publicado por 4fait (16 intervenciones) el 24/04/2007 12:43:54
Hola de nuevo:

MUCHO CUIDADO:
Cuando entre el 'SELECT' y el 'FROM' realizas alguna "operación" (MAX, AVG, SUM, DISTINCT, etx...) y esta/s operación/es son de algunos de los campos que estás seleccionando, estás obligada a poner un 'ORDER BY' de los campos que no se están operando.

SELECT SUM(Pvp) AS "Subtotal, NumeroFactura
FROM Facturas ORDER BY NumeroFactura;


Tus preguntas:

En el 1º caso, no "TRUENA" :-) (no crea error), porque no se realizan ninguna de las "operaciones" a las que me he referido anteriormente.

En el 2º caso, si se realiza una "operación" y al ponerle el 'ORDER BY' por un campo que no está seleccionado, ahí si se produce un ERROR. (vamos, es como si se quieren ordenar hombres según las veces que les ha bajado la regla).

En el 3º caso, al campo 'Nombre' le has creado un alias con la casualidad de que este alias coincide con la nomenclatura de otro campo de la tabla, pero eso no importa, el 'ORDER BY' en realidad te está ordenando los registros según el valor que tenga el campo 'Nombre'.
Si no te aclara mi explicación, prueba cambiar el alias y creo que ya lo verás mejor:

SELECT DISTINCT Nombre AS "Persona"
FROM Prueba ORDER BY Persona ASC;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error!! En DISTINCT junto con ORDER BY

Publicado por Julián (1 intervención) el 11/02/2022 18:03:59
Muchas gracias 4fait, me ayudó mucho tu respuesta
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar