|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.07.2013, 15:05 | #1 |
Пользователь
Регистрация: 12.07.2013
Сообщений: 28
|
Запрос с выбором дат
Ребята, подскажите, пожалуйста, каким образом сделать запрос (или несколько запросов).
В Access есть табличка много миллионов строк (выгрузка из оракла идет через одно место и потом импортируется в access через файлы dbf, напрямую к ораклу подключиться через access нельзя). Таблица содержит следующие инфо: - код товара - дата начала действия цены - цена Необходимо вытащить актуальную цену по позиции. При этом по одной позиции может быть: - несколько дат начала цен - дата начала цены может начинаться в будущем, т.е. ее мы учитывать не должны. Т.е. должно получиться что-то вроде этого where Start_date <= date() Первоначально запрос был написан таким образом (не знаю кто писал это) minimum( if (Start_date >= maximum (Start_date)) then (Price) else NULL), но очень долго вытягивается, т.к. идет пересчет, поэтому легче выгрузить массив и обработать его в access, если это вообще возможно. Во вложении имитация акцессовской таблицы, чтобы было легче (в данной таблице согласно описанных мною требований актуальная запись будет в строке 3). Буду очень благодарен за помощь. Последний раз редактировалось Maxim360; 18.07.2013 в 15:12. |
19.07.2013, 08:43 | #2 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
1. После импорта файла dbf откройте таблицу в режиме конструктора и убедитесь, что поля с датами (START_DATE и DATE_END) имеют тип "Дата/время", а MAGAS, CODE и PRICE - числовое (для ускорения процесса желательно - целое или длинное целое).
2. Создайте подчинённый запрос ЗапросТовар_Дата: SELECT ТаблицаЦен.MAGAS, ТаблицаЦен.CODE, Max(ТаблицаЦен.START_DATE) AS Max_START_DATE FROM ТаблицаЦен WHERE (((ТаблицаЦен.START_DATE)<=Date())) GROUP BY ТаблицаЦен.MAGAS, ТаблицаЦен.CODE; 3. Результирующий запрос: SELECT ТаблицаЦен.MAGAS, ТаблицаЦен.CODE, ТаблицаЦен.PRICE FROM ЗапросТовар_Дата INNER JOIN ТаблицаЦен ON (ЗапросТовар_Дата.Max_START_DATE = ТаблицаЦен.START_DATE) AND (ЗапросТовар_Дата.CODE = ТаблицаЦен.CODE) AND (ЗапросТовар_Дата.MAGAS = ТаблицаЦен.MAGAS);
Окупант, руки прочь от Украины!!! Слава Героям!
|
19.07.2013, 09:14 | #3 |
Пользователь
Регистрация: 12.07.2013
Сообщений: 28
|
Большое спасибо, получилось!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перекрестный запрос с условием дат из полей формы | АННА-ЕАО | Microsoft Office Access | 15 | 20.06.2013 17:21 |
Высчитывание и подстановка нескольких дат в sql запрос | HellFosa | C# (си шарп) | 2 | 19.11.2012 09:33 |
Sql запрос диапазона дат | Maksimuz | БД в Delphi | 7 | 14.01.2011 23:31 |
Как добавить значения из списка с множественным выбором в таблицу/запрос? | NickiBell | Microsoft Office Access | 0 | 24.09.2010 00:38 |
SQL запрос в MYSQL для интервала дат | slips | SQL, базы данных | 7 | 05.06.2010 21:41 |