SQL: как построить запрос
От: sushko Россия  
Дата: 23.02.17 13:26
Оценка:
Есть две таблицы:

PAYMENTS
— date
— currency
— amount

RATES
— date
— currency
— rate

Как построить запрос, выводящий список сумм платежей в базовой валюте по курсу на дату платежа?

У меня получается так:
SELECT amount *     
    (
    SELECT rate FROM rates WHERE rates.currency=payments.currency AND rates.date=
        (
        SELECT MAX(date) FROM rates WHERE rates.currency=payments.currency AND rates.date<=payments.date
        )
    )
FROM payments


Получается два вложенных селекта, что (zope'ой чувствую) напряжет БД (как минимум FireBird) до изнеможения на большом наборе данных. Можно ли как-то решить этот вопрос проще?

При этом:
Бесплатный генератор отчетов для программ на C/C++
http://www.oxetta.com
Отредактировано 23.02.2017 13:39 sushko . Предыдущая версия . Еще …
Отредактировано 23.02.2017 13:38 sushko . Предыдущая версия .
Отредактировано 23.02.2017 13:29 sushko . Предыдущая версия .
Отредактировано 23.02.2017 13:27 sushko . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.