SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.10.2010 22:15:25

ales
Участник
Зарегистрирован: 13.10.2010
Сообщений: 2

В чем моя ошибка? (логика запроса)

Всем привет. Нужна помощь в построении запроса.
Суть:
table1: production (id,data(дата производства продукта),good_id(Айди продукта),quantity(объем производства),sum(пока пустое))
table2: price (id,data(дата установления цены),good_id(Айди продукта),price(цена продукта))

Как видно из описания таблиц, дата производства не имеет однозначно установленной цены (цена могла установиться днями ранее)
Т.е. если в таблице нет цены на дату производства продукта, то выбираю из предыдущих цен для этого продукта самую "свежую".

Что я делаю:

UPDATE production p, price pr SET p.sum=p.quantity*pr.price
WHERE pr.price=(SELECT price FROM price WHERE p.data<=data ORDER BY data DECS LIMIT 0,1)

Запрос умирает.

Пробовал еще так:

UPDATE production p, price pr
SET p.sum=p.quantity*pr.price
WHERE p.good_id=pr.good_id and
            pr.data=(SELECT data FROM price
                            WHERE good_id=p.good_id and data<=p.data
                            ORDER BY data DESC limit 0,1)

Этот запрос выполняется, но результаты не совсем те что ожидаются.

Подскажите как можно решить задачу.

Неактивен

 

#2 13.10.2010 23:08:23

ales
Участник
Зарегистрирован: 13.10.2010
Сообщений: 2

Re: В чем моя ошибка? (логика запроса)

Проблема решена.
Второй вариант поменять местами data<=p.data

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson