Для одного данного product_id
:
SELECT * -- which columns do you need?
FROM product p
JOIN productfee f ON f.valid_from <= p.date
WHERE p.product_id = 2
ORDER BY f.valid_from DESC
LIMIT 1;
Если таблицы имеют нетривиальный размер, вам лучше иметь по крайней мере эти индексы:
CREATE INDEX ON product (product_id);
CREATE INDEX ON productfee (valid_from DESC);
(или более специализированные, в зависимости от полной картины.)
Если valid_from
может быть NULL
, рассмотрим NULLS LAST
. См .:
Очевидно, вы будете использовать надлежащие типы date
или timestamp
, а не только названия месяцев.