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

Ordenar por precio en distintas monedas

Estas en el tema de Ordenar por precio en distintas monedas en el foro de Mysql en Foros del Web. Hola, tengo una duda bastante importante... Estoy desarrollando una aplicacion en php, y necesito obtener datos de una bd ordenados por precio... Hasta ahí seria ...
  #1 (permalink)  
Antiguo 21/12/2008, 23:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Ordenar por precio en distintas monedas

Hola, tengo una duda bastante importante...
Estoy desarrollando una aplicacion en php, y necesito obtener datos de una bd ordenados por precio...
Hasta ahí seria algo sencillo, el problema es que estos precios pueden estar tanto en Pesos Argentinos ($) como en dolares (U$S) [La equivalencia es 1U$S = $3.40, pero cambia constantemente, por lo que esto debe ser dinámico]

Mi idea viene por este lado:
tener una tabla organizada así (resumidamente):
id | precio | moneda
0 | 5 | $
1 | 3 | U$S

y que lo ordene por precio, pero, si la moneda es U$S lo multiplique por un valor que tome desde un registro en otra tabla con la equivalencia del momento.

Muchas gracias!
  #2 (permalink)  
Antiguo 22/12/2008, 04:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ordenar por precio en distintas monedas

Si tienes una tabla llamada tabla con precio y moneda ($ o U$S) y otra llamada equivalencia y en ella un campo llamado moneda (U$S) y otro cantidad (numérico con el valor por el que hay que multiplicar los dólares)
yo intentaría algo así (esto muestra el precio en pesos, en dólares y el valor de ambos en pesos; ordena por ese valor en pesos).

Código sql:
Ver original
  1. SELECT t.precio, t.moneda, IF( t.moneda = '$', t.precio, t.precio * e.cantidad ) valor
  2. FROM tabla t
  3. LEFT JOIN equivalencia e ON t.moneda = e.moneda
  4. ORDER BY valor
  #3 (permalink)  
Antiguo 22/12/2008, 18:48
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ordenar por precio en distintas monedas

Código sql:
Ver original
  1. SELECT t.precio, t.moneda, IF( t.moneda = '$', t.precio, t.precio * e.cantidad ) valor
  2. FROM tabla t
  3. LEFT JOIN equivalencia e ON t.moneda = e.moneda
  4. ORDER BY valor

Hola, tengo una duda... Donde dice así, no deberia ser t.moneda = U$S?
De todas formas, no entiendo el porque del left join en este caso...
Podrias explicarme?


Edit: Ya entendí porque usas ahi el '$', no conocia bien la funcion if()

por otra parte... Modifique un poco tu query, pero me base en eso, muchas gracias!!!

quedó hecho algo similar a esto:

Código sql:
Ver original
  1. SELECT t.precio, t.moneda, IF( t.moneda = '$', t.precio, t.precio * (SELECT valor FROM configuracion WHERE atributo = 'preciodolar')) valor
  2. FROM tabla t
  3. ORDER BY valor

Última edición por Nerotkd; 22/12/2008 a las 23:32
  #4 (permalink)  
Antiguo 23/12/2008, 00:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ordenar por precio en distintas monedas

Me gusta más la tuya.

Suerte
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 18:42.