У меня есть 2 таблицы: Сделки (a) и Цены (b). Я хочу получить цену из таблицы b, которая действительна на дату транзакции.Левый Присоединиться по MAX (DATE)
Таблица а содержит историю статьи сделок: Store_type, дата, статьи, ...
Таблица б содержит историю цен статьи: Store_type, дата, статьи, цены
В настоящее время я имеют следующее:
Select
a.Store_type,
a.Date
a.Article,
(select b.price
from PRICES b
where b.Store_type = a.Store_type
and b.Article = a.Article
and b.Date = (select max(c.date)
from PRICES c
where c.Store_type = a.Store_type
and c.Article = a.Article
and c.date <= a.date)) AS ART_PRICE
from TRANSACTIONS a
Он работает нормально, но, похоже, занимает очень много времени из-за двойного подзапроса. Можно ли это сделать с ЛЕВЫМ ПРИСОЕДИНЕНИЕМ?
Неплохо иметь поле с именем 'Date', потому что это слово уже используется в sql – Hearner
Это пример ... В базе данных нет имени с именем. –
показать индексы, которые у вас есть, с помощью 'show create table xxx' для каждой таблицы. Ooops, что бы показать истинные имена столбцов, извините. – Drew