Добрый день!
Пока не смог найти решение для своей задачи, поэтому пишу сюда.
Имеется база с таблицей items и currency
В items забиты товары с ценой (столбцы id, name, price и currency_id)
В currency курсы валют (id,name,num)
id=1 name=рубль num=1
id=2 name=доллар num=60
В items у каждого товара своя цена, НО с учетом выбранной валюты, т.е. к примеру
id=1 name=Корзина price=300 currency_id=1
id=2 name=Тазик price=10 currency_id=2
В итоге имеем Корзину за 300*1 = 300 рублей и тазик за 10*60=600 рублей
Необходимо вывести все товары по возрастанию цены. Если делать через ORDER by price, то первым выведется Тазик, т.к. у него price 10, но цена указана в долларах, а по факту он дороже корзины, которая стоит 300 рублей.
Голову не окончательно еще сломал, но уже кипит, как сделать выборку и сортировку не делая кучу обращений к базе, т.к. товаров может быть более 10 000.
1. vladokzzz - 27 Марта, 2015 - 12:01:49 - перейти к сообщению
2. LIME - 27 Марта, 2015 - 12:23:54 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT items.* FROM items
- JOIN currency ON items.currency_id = currency.id
- ORDER BY items.price * currency.num
(Добавление)
но лучше хранить уже подсчитанную цену
можно дополнительным полем
в случае смены валюты пересчитывать