Выборка данных о товарах из базы с разной валютой?
Суть задачи такая:
1. Есть поисковая форма в которой есть поле, например, стоимость товара от...до.
2. Пользователь вводит например от 100 USD до 500 USD
3. В базе есть записи товаров, которые имеют поля price, currency_id и есть таблица курсов валют
Если, например, идет поиск товара за 300 долларов, то в эту выборку попадают товары за 300 долларов и, например, за 200 евро, но за 300 евро не попадают так как 300 евро больше 300 долларов.
Т.е на уровне запроса все приводится к какой-то единой валюте?
Херово сделана база. Несогласованность базы приводит к тому, что сама база перестаёт понимать как сопоставлять сущности друг с другом, в вашем случае вы не можете запросом к таблице товаров узнать, какой из них дороже, а какой дешевле. Храните либе два поля - в рублях и в нужной валюте, либо общайтесь с базой только в рублях а конвертацию производите на каждом запросе.
База досталась по наследству.
Приведу пример из жизни: цена на отель. Часто отели хранят цены на свои номера в валюте той страны в которой они находятся. Один хранит в долларах, второй в вьетнамских донгах.
Клиенту нужно найти отель не выше цены указанной в евро.
Опять же хранить в рублях херовое решение, цена в указанной валюте может меняться, а пересчитывать цены по крону по большой таблице - бред.
vitovt: "большой таблице - бред" - вам кампутер жалко? Мне, например, себя жалко, когда чтобы сделать обычный "<" и\мне приходится выбирать цену, валюту, джойнить по валюте вторую таблицу, перемножать и только после этого сравнивать. Курс меняется раз в день, а запросов у вас может быть тысячи в секунду. Логично просчитать новые цены 1 раз в день, а не тысячи раз в секунду считать одно и то же.