|
|
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Victosha если без Is Not Null то Max по дате может вернуть дату для которой Kurs Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 17:17 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Andrey Sk вот уж извиняйте - до меня только что дошло что цена и курс это одно и то же зарапортавался к вечеру впрочем, со мной это и с утра бывает это я покурил - и до меня дошло вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 17:17 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Я уже на пиве кстати чего и другим желаю Автору предлагаю оставить запрос как есть и забить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 17:18 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
в свете достигнутого мною понимания, могу попробовать предложить проверить, не будет ли быстрее заджойнить таблицу контрактов на таблицу курсов, вместо использования "вычислимого поля". Прокрутка в окне запроса должна бы ускориться. ( При вашем ра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) ) ) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 18:23 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Я уже дома и что же вижу??? - дискуссия продолжается!!! База осталась на работе, поэтому делаю две таблички со следующим содержанием: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Далее делаю запрос, аналогичный 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. Второй вариант даже не проверял! Мож сразу надо было домой податься? Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 20:28 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Ребята, да не нужны здесь ни какие джойны и группировки. Вполне достаточно. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 20:36 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Что касается Last:\r \r /topic/45103&pg=-1#309473 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2004, 21:42 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
VIG рулит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 11:57 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 (c)VIG Класный росчерк! -) 2 Владимир Саныч в этом месте неважно, температуру на какой планете First или Last показывают. Они все равно из набора строк, соответствующих Max дате свои значения выбирать будут. По условию предполагается, что таких одна окажется. Задача была - избежать группировки по курсу. 3 Andrey Sk Предложенные запросы скроют строки контрактов, для которых не найдется никаких записей в таблице курсов. Второй из предложенных мною подправляется на OR kk2.US_DAY IS NULL в условии отбора, к первому я бы дописал отдельный через UNION как вариант от (c)VIG на сей счет подправить я бегом не соображу, может он сам потом напишет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:08 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Victosha: Я это понимаю. Просто Andrey Sk исправил в твоем решении First на Last, что было совершенно бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:15 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч -)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:23 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
> как вариант от (c)VIG на сей счет подправить я бегом не соображу, может он сам потом напишет.. where rate is not null , очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:23 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Geo!!! Там это уже есть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:26 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Имеется в виду еще раз последней строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:31 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Geo!!!! В таблице Contacs поля Rate нетути! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:35 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
В таблице может и нету, а в запросе отчетливо видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:42 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Geo либо ты тупишь либо я Давай напиши как ты говоришь надо сделать, дай в конце концов полный синтаксис, по-моему ты не прав.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 15:49 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Я понял только то, что ничего не понял Зачем еще один is null ? Мой вариант отбирает все контракты из таблицы Contracts , и для каждого из них находит курс из таблицы Rates в соответствии с критериями AndreySk ( т.е если нужной даты нет в таблице Rates или для этой даты курс не проставлен , то берется курс на ближайшую меньшую дату) З.Ы Спасибо за комплименты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:03 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 ПОЙ Код: plaintext 1. 2. 3. 4. 5. 2 VIG Если я правильно понял, еще требуется убрать контракты, на дату которых нет ни одного курса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:08 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
Geo сдал позиции.. VIGили для этой даты курс не проставлен Geo я не знаю что тебе еще сказать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:12 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 2ПОЙ: Geo говорит о случае, когда ближайшей меньшей тоже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:21 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Geo >Если я правильно понял, еще требуется убрать контракты, на дату которых нет ни одного курса. Честно говоря ,сомневаюсь. Предположим имеем Rates date Rate 01/01/2004 32.5 05/01/2004 10/01/2004 31.0 логично предположить , что для всех контрактов ,заключенных между первым и девятым января надо брать тот курс которай действует , т.е 32.5 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:21 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 Пой Если есть такая таблица курсов Код: plaintext 1. 2. И таблица контрактов Код: plaintext 1. 2. 3. то запрос VIG'а вернет Код: plaintext 1. 2. 3. Чтобы убрать первую запись, на которую еще не установлен никакой курс, можно добавить в запрос указанную строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:26 |
|
||
|
Курс валюты. Медленно ;-( Хочется быстрее
|
|||
|---|---|---|---|
|
#18+
2 (c)VIG не убрать, а показать, в моих вариантах такие скроются, твой похоже сам все покжет, - проверять лень. поясняю - пусть контракт от даты N, а в таблице курсов СОВСЕМ НЕТ записей на дату <=Т - никаких нет ни пустых ни со значениями - это же не повод, чтобы контракты не показывать. PS1 отсутствие уникального индекса по дате открывает дорогу к возможности иметь более одного курса на заданную дату, что объявляется мной ошибкой пректирования PS2 Жаль, Latuk не захотел поспорить. -) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2004, 16:31 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32495384&tid=1675084]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 445ms |

| 0 / 0 |
