Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Query para "seleccionar pedido de mayor importe"?

Estas en el tema de Query para "seleccionar pedido de mayor importe"? en el foro de Mysql en Foros del Web. Tengo una tabla de pedidos (= orders) con dos columnas de número de pedido (= orderid) y el importe total de cada pedido (= amount). ...
  #1 (permalink)  
Antiguo 28/10/2005, 04:16
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Query para "seleccionar pedido de mayor importe"?

Tengo una tabla de pedidos (= orders) con dos columnas de número de pedido (= orderid) y el importe total de cada pedido (= amount). Se me pide el orderid con mayor amount.

El ejemplo me sale en un libro de MySQL para ilustrar los procedimientos almacenados, pero ya se especifica que este mismo ejemplo se puede hacer en una sola pequeña consulta.

Lo he intentado de varias formas y no me sale. Alguna ayuda?

Algunos intentos fallidos que he hecho:

Código:
select orderid
from orders
where (select max(amount) from orders);
Código:
select orderid, amount from orders
where amount >= all (select amount from orders);

Lo gracioso es que ahora sólo me sale de la manera más larga, con el procedimiento almacenado. Os lo dejo aquí también para quien esté interesado en saber cómo es:

Código:
# Cambiar delimitador de punto y coma a doble barra:
delimiter //

create procedure mayor_pedido (out id_mayor_pedido int)
begin
     declare id_actual;
     declare total_actual float;
     declare ultimo_total_mayor float default 0.0;
     declare ultimo_id_mayor int;

     declare hecho int default 0;
     declare continue handler for not found set hecho = 1;
     declare fila_actual cursor for select orderid, amount from orders;

     open fila_actual;
     repeat
          fetch fila_actual into id_actual, total_actual;
          if not hecho then
               if total_actual > ultimo_total_mayor then
                    set ultimo_total_mayor = total_actual;
                    set ultimo_id_mayor = id_actual;
               end if;
          end if;
     until hecho end repeat;
     close fila_actual;

     set id_mayor_pedido = ultimo_id_mayor;
end
# Ejecutar procedimiento con la doble barra:
//

#devolver función de ejecución de comandos al punto y coma:
delimiter ;
  #2 (permalink)  
Antiguo 28/10/2005, 07:55
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Nadie sabría decírmelo? La consulta parece muy sencilla, y seguro que es una tontería, pero no consigo hacerla bien. Ayuda please!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:47.