Правиш си таблица за валутите с относителната им стойност спрямо избрана от теб валута - например евро:
mysql> SELECT * FROM currency;
+--------------+------+----------+
| currency_sid | name | value |
+--------------+------+----------+
| 1 | EUR | 1 |
| 2 | USD | 0.813337 |
| 3 | CHF | 0.646307 |
+--------------+------+----------+
Имаш и таблицата с имотите, където пазиш оригиналните валути и оригиналните цени:
mysql> SELECT * FROM real_estate;
+-----------------+----------------------+--------+--------------+
| real_estate_sid | name | price | currency_sid |
+-----------------+----------------------+--------+--------------+
| 1 | Къща в Драгалевци | 200000 | 1 |
| 2 | Барака във Факултето | 10000 | 2 |
| 3 | Мезонет в Женева | 300000 | 3 |
+-----------------+----------------------+--------+--------------+
Потребителят въвежда стойности за минимална и максимална стойност на валутите и номер на валутата, съответно: $min_value, $max_value, $currency_sid . Трябват ти всичко на всичко 2 заявки - една за да видиш текущия курс на валутата и втора, за да извадиш самите имоти. Ако не е критично, можеш и още при показване на списъка с валутите да взимаш и текущия курс и при submit директно да рапзолагаш с него - този метод обаче не е сигурен - пак казвам, ако не е критично, така си спестяваш 1 заявка. В противен случай ти трябва това:
SELECT
@curr_value := value
FROM
currency
WHERE
currency_sid=$currency_sid;
SELECT
re.real_estate_sid,
re.name,
re.price AS original_price,
c.name AS original_currency,
re.price * c.value AS price_in_euro
FROM
real_estate re INNER JOIN currency c
ON
re.currency_sid=c.currency_sid
WHERE
re.price * c.value BETWEEN $min_value * @curr_value AND $max_value * @curr_value
Разбира се, вероятно в таблицата с валутите ще имаш и дата, но принципно това не променя нищо - просто ще гледаш курса за текущата дата. ![](http://i.dirbg.com/clubs/icons/smile.gif)
Everything louder than everything else...