A ver si alguien me puede ayudar porque me estoy volviendo loco xD. Pongo primero las tablas:
Tabla proveedores:
Tabla pedidos:
Tabla piezas:
Tabla remesas:
Ejercicio: obtener el codigo pedido(NUMPED), fecha de pedido (FECHAP), codigo del proveedor(CODPROV), nombre del proveedor(NOMBRE) e importe de pedido de mayor valor.
Bien, el importe de pedido es un campo calculado. Es el sumatorio de las cantidades (campo CTD en la tabla remesas) pedidas, multiplicadas por el precio de coste de las piezas. Esto lo he podido hacer:
SELECT PEDIDOS.NUMPED, FECHAP, PROVEEDORES.CODPROV, NOMBRE, SUM(CTD*PRECIO) AS IMPORTEMAX
FROM PEDIDOS, PROVEEDORES, REMESAS, PIEZAS
WHERE PROVEEDORES.CODPROV=PEDIDOS.CODPROV
AND PIEZAS.CODPIEZA=REMESAS.CODPIEZA
AND PEDIDOS.NUMPED=REMESAS.NUMPED
GROUP BY NUMPED
;
Y me da esta tabla:
Pero necesito que sólo me aparezca el importe de pedido de mayor valor. Es decir, esta linea:
He intentado hacer:
SELECT PEDIDOS.NUMPED, FECHAP, PROVEEDORES.CODPROV, NOMBRE, SUM(CTD*PRECIO) AS IMPORTEMAX
FROM PEDIDOS, PROVEEDORES, REMESAS, PIEZAS
WHERE PROVEEDORES.CODPROV=PEDIDOS.CODPROV
AND PIEZAS.CODPIEZA=REMESAS.CODPIEZA
AND PEDIDOS.NUMPED=REMESAS.NUMPED
GROUP BY NUMPED
HAVING IMPORTEMAX=(SELECT MAX(IMPORTEMAX))
;
Pero nada, me da un error. Supongo que hay que indicarle en el select del having la tabla donde está IMPORTEMAX pero IMPORTEMAX es un campo calculado. Así que no está en ninguna tabla.