Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2010, 08:50
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta mysql con campos a agrupar

creo que tu problema es este:
Cita:
Particularmente mi problema es con los campos moneda y precio, ya que en ellos se acumulan la moneda (puede estar en pesos o dolares) y en precio el valor. Luego con código php, armo una función que toma el valor del dolar de otra tabla y actualiza los productos que estén en dólares para poder mostrar todo el catálogo en pesos. Hasta aquí todo bien.
imagino que tienes dos tablas
tablaventa y tablamonedas

Si tú tienes en tablamonedas el campo valor en pesos o dólares
imagina:
tablamonedas
idtblmoneda, moneda, valorpeso



y en la tablaventas
idventa, producto, precio, moneda

Piensa que de esa manera puedes añadir otras monedas y también que los cambios serán dinámicos: bastará con cambiar el valorpeso del dólar o la moneda que sea para que se cambie todo el orden. Pero, ojo, esto puede alterar datos de interés, pues los cambios de moneda podrían alterar tu histórico. Quizás deberías crear un par de campos más para saber el cambio del momento y el precio final y guardarlo, y ordenar por ese dato almacenado. Yo lo preferiría. No obstante, si no necesitas nada de eso y es sólo para ordenar, te bastará con lo que te propongo:
en el campo moneda (que debaría ser INT) guardas el valor de idtblmoneda correspondiente, o incluso guardando el nombre de la moneda (en este caso VARCHAR; pero, cuidado con los nombres iguales con distintos valores: mejor un idtblmoneda), te resultará fácil ordenar como quieres con un sencillo producto

SELECT * FROM tablamonedas m INNER JOIN tablaventas v ON m.idtblmoneda = v.moneda ORDER BY v.precio * m.valorpeso DESC

Esta es la idea.

Última edición por jurena; 26/07/2010 a las 08:56