powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Курс валюты. Медленно ;-( Хочется быстрее
25 сообщений из 54, страница 2 из 3
Курс валюты. Медленно ;-( Хочется быстрее
    #32494763
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Victosha
если без Is Not Null
то Max по дате может вернуть дату для которой Kurs Null
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32494766
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Andrey Sk
вот уж извиняйте - до меня только что дошло что цена и курс это одно и то же
зарапортавался к вечеру
впрочем, со мной это и с утра бывает

это я покурил - и до меня дошло
вот
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32494771
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже на пиве кстати чего и другим желаю
Автору предлагаю оставить запрос как есть и забить!
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32494928
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в свете достигнутого мною понимания, могу попробовать предложить проверить, не будет ли быстрее заджойнить таблицу контрактов на таблицу курсов, вместо использования "вычислимого поля". Прокрутка в окне запроса должна бы ускориться.
(
При вашем раcкладе, составной индекс RATES.US_DAY, RATES.KURS хорошо бы смотрелся.
Не вполне понятно, почему его создать нельзя
)



что нибудь типа (вариаций на тему может быть несколько)

SELECT Контракты.Цена, Контракты.ДатаСделки,Max(KK2.US_DAY) as [Дата Курса], First( kk2.KURS) AS kurs2
FROM Контракты LEFT JOIN ( SELECT RATES.US_DAY, RATES.KURS
FROM RATES
WHERE
RATES.KURS IS Not Null
) as kk2
ON Контракты.ДатаСделки >= kk2.US_DAY
Group by Контракты.Цена, Контракты.ДатаСделки


или в лоб ( хотя первый мне больше нравится)

SELECT Контракты.Цена, Контракты.ДатаСделки, kk2.KURS
FROM Контракты LEFT JOIN ( SELECT RATES.US_DAY, RATES.KURS
FROM RATES
WHERE
RATES.KURS IS Not Null
) as kk2
ON Контракты.ДатаСделки >= kk2.US_DAY
WHERE (
(
(kk2.US_DAY) In (SELECT Max(KK1.US_DAY) AS MaxDay
FROM RATES as kk1
WHERE
(KK1.US_DAY<= Контракты.[ДатаСделки])
AND
(KK1.KURS Is Not Null)
)
)
)
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495066
Andrey Sk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже дома и что же вижу??? - дискуссия продолжается!!! База осталась на работе, поэтому делаю две таблички со следующим содержанием:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
RATES:
US_DAY           KURS_US
>02 /07  /02            32  ,45 
>03 /07  /02 
>04 /07  /02 
>06 /07  /02            32  ,50 
CTS:
num               dat
>111                05  /07  /02 

Далее делаю запрос, аналогичный 1 варианту Victosha, но с исправлением:

SELECT CTS.num, CTS.dat, MAX(Q.US_DAY) as DateOfKurs,Last (Q.KURS) as KursCTS
FROM CTS LEFT JOIN (SELECT US_DAY, KURS FROM Rates WHERE KURS<>0) as Q ON CTS.dat>=Q.US_DAY
Group by CTS.Num, CTS.dat;
и получаю нужный мне результат:
Код: plaintext
1.
num    CTS.dat          DateOfKurs    KursCTS
>111      05  /07  /02          02  /07  /02         32  ,45 


Второй вариант даже не проверял!

Мож сразу надо было домой податься?
Всем спасибо
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495071
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, да не нужны здесь ни какие джойны и группировки. Вполне достаточно.
Код: plaintext
1.
2.
3.
4.
SELECT c.date,
      (select top  1  rate from rates r
       where r.datet <=c.datet  and r.rate is not null 
       order by r.datet desc) as Rate
FROM Contracts c 
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495108
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Что касается Last:\r
\r
/topic/45103&pg=-1#309473
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495260
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG рулит
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495359
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 (c)VIG
Класный росчерк!
-)

2 Владимир Саныч
в этом месте неважно, температуру на какой планете First или Last показывают. Они все равно из набора строк, соответствующих Max дате свои значения выбирать будут. По условию предполагается, что таких одна окажется. Задача была - избежать группировки по курсу.


3 Andrey Sk
Предложенные запросы скроют строки контрактов, для которых не найдется никаких записей в таблице курсов.
Второй из предложенных мною подправляется на OR kk2.US_DAY IS NULL в условии отбора, к первому я бы дописал отдельный через UNION

как вариант от (c)VIG на сей счет подправить я бегом не соображу, может он сам потом напишет...
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495363
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Victosha:

Я это понимаю. Просто Andrey Sk исправил в твоем решении First на Last, что было совершенно бессмысленно.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495371
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
-))
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495372
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> как вариант от (c)VIG на сей счет подправить я бегом не соображу, может он сам потом напишет..
where rate is not null
, очевидно.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495376
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo!!!
Там это уже есть!
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495382
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется в виду еще раз последней строкой.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495384
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo!!!!
В таблице Contacs поля Rate нетути!
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495397
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице может и нету, а в запросе отчетливо видно.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495402
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo либо ты тупишь либо я
Давай напиши как ты говоришь надо сделать, дай в конце концов полный синтаксис, по-моему ты не прав....
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495410
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял только то, что ничего не понял
Зачем еще один is null ?
Мой вариант отбирает все контракты из таблицы Contracts , и для каждого из них находит курс из таблицы Rates в соответствии с критериями AndreySk ( т.е если нужной даты нет в таблице Rates или для этой даты курс не проставлен , то берется курс на ближайшую меньшую дату)
З.Ы Спасибо за комплименты.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495411
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ПОЙ
Код: plaintext
1.
2.
3.
4.
5.
SELECT c.date,
      (select top  1  rate from rates r
where r.datet <=c.datet  and r.rate is not null 
order by r.datet desc) as Rate
FROM Contracts c
WHERE Rate is not null


2 VIG
Если я правильно понял, еще требуется убрать контракты, на дату которых нет ни одного курса.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495414
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo сдал позиции..
VIGили для этой даты курс не проставлен
Geo я не знаю что тебе еще сказать..
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495418
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 2ПОЙ:

Geo говорит о случае, когда ближайшей меньшей тоже нет.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495419
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
>Если я правильно понял, еще требуется убрать контракты, на дату которых нет ни одного курса.
Честно говоря ,сомневаюсь.
Предположим имеем
Rates
date Rate
01/01/2004 32.5


05/01/2004


10/01/2004 31.0

логично предположить , что для всех контрактов ,заключенных между первым и девятым января надо брать тот курс которай действует , т.е 32.5 .
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495422
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Пой
Если есть такая таблица курсов
Код: plaintext
1.
2.
1 -1  -2001     10 
>1 -2  -2001     11 
>1 -5  -2001     12 


И таблица контрактов
Код: plaintext
1.
2.
3.
1 -1  -2000 
>1 -1  -2001 
>1 -3  -2001 
>1 -5  -2001 


то запрос VIG'а вернет
Код: plaintext
1.
2.
3.
1 -1  -2000    Null
>1 -1  -2001     10 
>1 -3  -2001     11 
>1 -5  -2001     12 


Чтобы убрать первую запись, на которую еще не установлен никакой курс, можно добавить в запрос указанную строку.
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495427
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 (c)VIG
не убрать, а показать, в моих вариантах такие скроются, твой похоже сам все покжет, - проверять лень.
поясняю - пусть контракт от даты N, а в таблице курсов СОВСЕМ НЕТ записей на дату <=Т - никаких нет ни пустых ни со значениями - это же не повод, чтобы контракты не показывать.

PS1 отсутствие уникального индекса по дате открывает дорогу к возможности иметь более одного курса на заданную дату, что объявляется мной ошибкой пректирования

PS2 Жаль, Latuk не захотел поспорить. -)
...
Рейтинг: 0 / 0
Курс валюты. Медленно ;-( Хочется быстрее
    #32495428
Фотография 2ПОЙ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фу славно то как
а Geo меня уже начал бесить
Извини Geo, ты прав, такие контакты тоже надо убрать.
Чего то я совсем о2Пел ..
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Курс валюты. Медленно ;-( Хочется быстрее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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