powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с запросом
8 сообщений из 8, страница 1 из 1
помогите с запросом
    #33782216
startFOX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста.

Есть таблица "История цен" с полями: (id, iduse, price, date_price)
Код: plaintext
1.
2.
3.
4.
id - счётчик
iduse - тип услуги
price - стоимость услуги
date_price -дата вступления в силу новой цены этой услуги
Есть запрос-отчёт, который формируется на основе определенной
даты, привлекая другие таблицы. В Отчёте присутствуют строки
с разными видами услуг (соответственно разными ценами).

Например:
ОТЧЕТ на 1.06.2005
Код: plaintext
1.
2.
3.
4.
(fio, id_use, name_use, kol_vo, history.price, kol_vo*history.price as sum1)
fio1    1   'tata'   5    13 . 00    5 * 13 . 00 
fio2    2   'ryry'   2    10 . 50    2 * 10 . 50 
fio3    1   'tata'   8    13 . 00    8 * 13 . 00 
ИСТОРИЯ ЦЕН
Код: plaintext
1.
2.
3.
4.
5.
 1    1    12 . 50    01 . 01 . 2005 
 2    2     9 . 20    15 . 01 . 2005 
 3    1    12 . 70    15 . 03 . 2005 
 4    1    13 . 00     1 . 06 . 2005 
 5    2    10 . 50     1 . 06 . 2005 

ДАТА: 1.06.2005

Как учитывая ДАТУ подставить нужную стоимость?

Сейчас в отчёте дублируются строки: каждая позиция со своей ценой из Истории цен

Очень надеюсь, что не запутал окончательно
...
Рейтинг: 0 / 0
помогите с запросом
    #33782260
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
В условии задачи не хватает информации - для какой версии Foxa нужно соорудить запрос.
...
Рейтинг: 0 / 0
помогите с запросом
    #33782264
startFOX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не знает ответа.
Если запутанно объяснил - уточните.

Помогите, пожалуйста. Второй день бьюсь...

P.S. VFP 7.0
...
Рейтинг: 0 / 0
помогите с запросом
    #33782340
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Использовать having по дате.
INNER JOIN history ON history.id_use = <tablename>.id_use
HAVING ABS(<tablename>.date - history.date_price) = MIN(ABS(<tablename>.date - history.date_price))
Плюс еще нужна группировка по всем полям не содержащим агрегатных функций (для семерки вроде не критично)...

2. Ввести в таблицу услуг идентификатор цены, по которой услуга оказывалась и джойнить по нему:
SELECT
<tablename>.fio,
<tablename>.id_use,
<tablename>.name_use,
<tablename>.kol_vo,
history.price,
<tablename>.kol_vo*history.price as sum1
FROM <tablename>
INNER JOIN history ON history.id = <tablename>.price_id [AND history.id_use = <tablename>.id_use]
...
Рейтинг: 0 / 0
помогите с запросом
    #33782423
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, как в VFP 7.0, а в VFP 9.0 можно так:
Код: plaintext
1.
2.
3.
4.
5.
m.lData = DATE()
select t.fio, t.id_use, t.name_use, t.kol_vo, NVL(h.Price,  0 ) AS Price,  
NVL(h.Price,  0 )* t.kol_vo AS Sum1
from Table1 t left join history h ON t.id_use = h.id_use 
where h.date_price = (select MAX(h1.date_price) FROM history h1 WHERE h1.id_use = t.id_use AND h1.date_price  <= m.lData )
ORDER BY t.fio
С уважением, Алексей
P.S. Но у вас не должно быть одинаковых date_price в history для одного и того же id_use
...
Рейтинг: 0 / 0
помогите с запросом
    #33782540
startFOX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, кто откликнулся.

Разбираюсь, пытаюсь осмыслить предложения
...
Рейтинг: 0 / 0
помогите с запросом
    #33782601
startFOX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
startFOXСпасибо всем, кто откликнулся.

Разбираюсь, пытаюсь осмыслить предложения

А как должен выглядеть запрос к таблице ИСТОРИЯ ЦЕН , результатом которой является только три (в зависимости от количества услуг, в моем случае 3) записи с актуальными стоимостями на выбранную дату?
...
Рейтинг: 0 / 0
помогите с запросом
    #33783596
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри, мой 1 вариант неверный: у Алексея правильный вариант решения, на 7ке должен работать...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]