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

precio más pequeño de cada producto

Estas en el tema de precio más pequeño de cada producto en el foro de Mysql en Foros del Web. Hola, tengo una consulta que me trae de cabeza. Hay dos tablas: productos y precio. Un producto puede tener varios precios. Lo que quiero obtener ...
  #1 (permalink)  
Antiguo 25/07/2008, 03:15
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
precio más pequeño de cada producto

Hola, tengo una consulta que me trae de cabeza.

Hay dos tablas: productos y precio. Un producto puede tener varios precios.

Lo que quiero obtener es el precio más pequeño de cada producto.

No consigo que me salga. La última prueba que hice fue:
Código:
SELECT pro.*
FROM productos as pro LEFT JOIN precios as pre ON pro.id = pre.producto
GROUP BY pre.producto
HAVING MIN(pre.producto)
pero esto no me devuelve ningún producto.

¿Alguna ayuda?
  #2 (permalink)  
Antiguo 25/07/2008, 05:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: precio más pequeño de cada producto

No estás haciendo la consulta correctamente.
El SELECT debe definir QUE te muestra, y COMO te los muestra. SI lo que quieres es el menor precio de un producto, eso es el QUE. cuando pones HAVING le estás diciendo que tenga el menor ID (suponiendo que pro.id y pre.producto tienen el mismo dato), no el menor precio.
En estos casos no sirve poner SELECT * porque no puedes definir nada sobre ningún campo de la tabla y estás tratando de definir el menor. Hay que listar por nombre los campos que vas a visualizar.
Además SELECT * FROM es lo más ineficiente, porque te va a trae incluso datos que no vayas a usar, recargando la lectura inutilmente.
La cosa andaría (sin saber los nombres de los campos):
Código:
SELECT pri.id, pro.desc, pro.cant, MIN(pre.precio) precio
FROM Productos as pro INNER JOIN precios as pre ON pro.id = pre.producto
GROUP BY pri.id;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/07/2008, 05:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: precio más pequeño de cada producto

SELECT pro.nombre campo tabla productos, ...., MIN(pre.precio) as precioMinimo
FROM productos as pro INNER JOIN precios as pre
ON pro.id = pre.producto
GROUP BY pro.id;

Si o si?

Quim
  #4 (permalink)  
Antiguo 25/07/2008, 10:40
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: precio más pequeño de cada producto

Gracias a los dos por su ayuda.
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 12:08.