|
|
|
| Необходимо выбрать из таблицы товарные позиции, где цены указаны в разных валютах. Проблема в том, как все это отсортировать.
Пример запроса:
SELECT ..., price, currency, ... FROM product ORDER BY price. (на месте многоточий несколько других столбцов)
Но такой запрос выведет позицию с ценой 100 долларов выше позиции с ценой 120 рублей, хотя 100 долларов больше 120-и рублей.
Я создал специальную таблицу курсов некоторых валют:
+-----+----------+--------------+
| id | curren | inrouble |
+-----+----------+--------------+
| 1 | usd | 30 |
+-----+----------+--------------+
| 2 | eur | 40 |
+-----+----------+--------------+
|
И вот не знаю как правильно связать эти таблицы в одном запросе. | |
|
|
|
|
|
|
|
для: Mookapek
(19.03.2010 в 01:46)
| | Дык наверное ORDER BY price * inrouble ? | |
|
|
|
|
|
|
|
для: Trianon
(19.03.2010 в 01:59)
| | Что это за конструкция такая странная? Отсортировать по полю price умноженному на поле inrouble? Я чего-то не понимаю... | |
|
|
|
|
|
|
|
для: Mookapek
(20.03.2010 в 00:16)
| | Да, наверное... | |
|
|
|
|
|
|
|
для: Trianon
(20.03.2010 в 00:36)
| | Ну а как связать то эти таблицы? Столбец inrouble из другой таблицы то, поэтому mysql пишет, что мол unknow column. | |
|
|
|
|
|
|
|
для: Mookapek
(20.03.2010 в 01:20)
| | Обычным образом. С помощью t1 LEFT JOIN t2 ON условие_сопоставления_строк | |
|
|
|
|
|
|
|
для: Trianon
(20.03.2010 в 13:32)
| | Сделал такой запрос
SELECT price, currency FROM product LEFT JOIN rates ON rates.curren = product.currency ORDER BY product.price*rates.inrouble;
Но в результате товарные позиции с ценами в валюте сортируются, а в рублях нет. | |
|
|
|
|
|
|
|
для: Mookapek
(23.03.2010 в 00:47)
| | В таблицу валют надо добавить рубль с курсом 1 | |
|
|
|
|
|
|
|
для: GeorgeIV
(23.03.2010 в 09:55)
| | Человеку надо оставлять возможность подумать самому.
Кстати, рубль с курсом 1 - выход не единственный, хотя другие, вероятно, менее оптимальные. | |
|
|
|
|
|
|
|
для: GeorgeIV
(23.03.2010 в 09:55)
| | Да, верно. Спасибо Вам и Трианону. | |
|
|
|