Amarok
Новичок
Соединение таблицы с последними значениями другой таблицы
Ситуация следующая:
Есть две таблицы
movements(движения товаров):
--------------------------------------------------
| period | shop_id | good_id | quantity |
--------------------------------------------------
prices(цены товаров):
---------------------------------------------
| period | shop_id | good_id | price |
---------------------------------------------
Связь таблиц соответственно по полям shop_id и good_id.
Поле period - это дата либо движения, либо установки цены.
Необходимо получить запрос дающий следующий результат:
| period | shop_id | good_id | quantity | price |
где соответственно цена - это цена товара, ближайшая к дате движения.
Проблема в том что у меня не получатся получить цену товара на дату движения, во всяком случае чтобы это было быстро.
Пробовал сделать так:
[sql]
select
m.period,
m.good_id,
m.quantity,
p.price
from
movements as m
left join prices as p on
(p.shops_id=m.shops_id
and
p.goods_id=m.goods_id
AND
p.period=(
select max(pr.period) from prices as pr where (p.shops_id=pr.shops_id)and(p.goods_id=pr.goods_id)and(pr.period<=m.period))
)
[/sql]
Нашел тему Срез последних, но тут немножечко другая ситуация...
Может кто помочь?
Ситуация следующая:
Есть две таблицы
movements(движения товаров):
--------------------------------------------------
| period | shop_id | good_id | quantity |
--------------------------------------------------
prices(цены товаров):
---------------------------------------------
| period | shop_id | good_id | price |
---------------------------------------------
Связь таблиц соответственно по полям shop_id и good_id.
Поле period - это дата либо движения, либо установки цены.
Необходимо получить запрос дающий следующий результат:
| period | shop_id | good_id | quantity | price |
где соответственно цена - это цена товара, ближайшая к дате движения.
Проблема в том что у меня не получатся получить цену товара на дату движения, во всяком случае чтобы это было быстро.
Пробовал сделать так:
[sql]
select
m.period,
m.good_id,
m.quantity,
p.price
from
movements as m
left join prices as p on
(p.shops_id=m.shops_id
and
p.goods_id=m.goods_id
AND
p.period=(
select max(pr.period) from prices as pr where (p.shops_id=pr.shops_id)and(p.goods_id=pr.goods_id)and(pr.period<=m.period))
)
[/sql]
Нашел тему Срез последних, но тут немножечко другая ситуация...
Может кто помочь?