elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Problema con subconsultas en mysql [solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con subconsultas en mysql [solucionado]  (Leído 6,405 veces)
bewa

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Problema con subconsultas en mysql [solucionado]
« en: 31 Marzo 2012, 20:13 pm »

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.



« Última modificación: 1 Abril 2012, 01:54 am por bewa » En línea

HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Problema con subconsultas en mysql
« Respuesta #1 en: 31 Marzo 2012, 20:59 pm »

Buenas.

Con el uso de "ORDER BY" y "LIMIT", deberías obtener el resultado deseado.

Saludos.


En línea

- Nice to see you again -
bewa

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Problema con subconsultas en mysql
« Respuesta #2 en: 1 Abril 2012, 00:57 am »

Está curioso lo del limit xD, no lo había usado nunca. Así funciona:

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
ORDER BY IMPORTEMAX DESC
LIMIT 1
;

Lo que pasa es que me va a decir que esto es trampa  :xD porque son ejercicios de subconsultas. Pero está muy bien pensado.

Muchas gracias!!!
En línea

bewa

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Problema con subconsultas en mysql
« Respuesta #3 en: 1 Abril 2012, 01:52 am »

Al final lo he podido hacer con subconsultas. Lo dejo aquí solucionado:

SELECT PEDIDOS.NUMPED, FECHAP, PROVEEDORES.CODPROV, NOMBRE,
SUM(PRECIO*CTD) AS IMPORTEMAX
FROM PEDIDOS, PROVEEDORES, REMESAS, PIEZAS
WHERE PEDIDOS.NUMPED=REMESAS.NUMPED
AND PIEZAS.CODPIEZA=REMESAS.CODPIEZA
AND PROVEEDORES.CODPROV=PEDIDOS.CODPROV
GROUP BY NUMPED
HAVING IMPORTEMAX >= ALL(
    SELECT SUM(PRECIO*CTD)
    FROM PIEZAS, REMESAS
    WHERE PIEZAS.CODPIEZA=REMESAS.CODPIEZA
    GROUP BY NUMPED
                    )
;

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado]problema paginacion php+mysql « 1 2 »
PHP
CrÄsH 14 7,508 Último mensaje 5 Marzo 2009, 02:40 am
por Mr. Crowley
insert y subconsultas en mysql
Bases de Datos
doreymis 4 11,039 Último mensaje 8 Junio 2010, 21:26 pm
por ^Tifa^
problema con mysql [SOLUCIONADO]
Bases de Datos
jjam45 3 6,830 Último mensaje 15 Julio 2010, 01:00 am
por jjam45
[Solucionado]Dudas Sql subconsultas relacionando varias tablas « 1 2 »
Bases de Datos
Anonymous250 11 17,605 Último mensaje 10 Enero 2012, 12:36 pm
por Anonymous250
simple duda Consulta mysqlworkbench Insert into con 2 subconsultas
Bases de Datos
Anonymous250 1 2,531 Último mensaje 13 Junio 2012, 23:41 pm
por Shell Root
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines