|
|
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Совместимость кода с vfp ole db provider v9 Есть таблица Код: plaintext 1. [ 1] - [ Знач1] - [01.01.1980] [ 1] - [ Знач2] - [01.01.2004] [ 1] - [ Знач3] - [01.01.2005] Запросом хочу получить значение (value) и внешний ключ (id) соответсвующий максимальной дате, но по условию, ограничевающему диапозон дат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если же ставлю Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 21:06:54 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Try this: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 21:10:02 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Sergey ChTry this: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Так если я сгруппирую по 1-му и 3-му полю, то получю не совсем то. Если взять мой пример данных таблицы, то я получу именно то, что в примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 21:14:56 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Try this: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 21:23:26 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Sergey ChTry this: Код: plaintext 1. Думал я об подзапросе, но имхо это полная глупость. Тем более, что под условие WHERE c_vv.date может попасть несколько кортежей с одной и той же датой. Т.е. на одну дату будет несколько строк, в которых могут быть различные згначения (value) [1] - [знач1] - [01.01.1980] [1] - [знач2] - [01.01.2004] [1] - [знач3] - [01.01.2005] [1] - [знач4] - [01.01.2005] Т.е. подзапрос вернет 01.01.2005, что и правильно, но на эту дату есть два значения: знач3 и знач4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 21:34:19 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
spock Т.е. подзапрос вернет 01.01.2005, что и правильно, но на эту дату есть два значения: знач3 и знач4 Так напишите что Вам надо... Должно же быть условие выбора и из этих значений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 22:15:14 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Hi spock! 1) Подзапрос не глупость - а единственно верный вариант решения данной задачи. Есть несколько видов подзапросов, в частности указанный Сергеем, а также варианты для извлечения сразу данных для всех ID (т.е. без корреляции подзапроса с основным запросом) - примеры можно найти поиском, а также в FAQ на foxclub.ru (может и тут есть, не помню). 2) Если у тебя есть 2 записи на одну дату - то сформулируй правило, по которому ты определяешь какая из них тебе нужна. если такого правила нет - то извини, но получишь ОБЕ записи, как же иначе :) Почему запрос должен выбирать (за тебя) то, о чём его не просят. P.S. Дополнительное условие на твой диапазон дат ставится в подзапрос. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 01:50:28 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov 1) Подзапрос не глупость - а единственно верный вариант решения данной задачи. Есть несколько видов подзапросов, в частности указанный Сергеем, а также варианты для извлечения сразу данных для всех ID (т.е. без корреляции подзапроса с основным запросом) - примеры можно найти поиском, а также в FAQ на foxclub.ru (может и тут есть, не помню). 2) Если у тебя есть 2 записи на одну дату - то сформулируй правило, по которому ты определяешь какая из них тебе нужна. если такого правила нет - то извини, но получишь ОБЕ записи, как же иначе :) Почему запрос должен выбирать (за тебя) то, о чём его не просят. P.S. Дополнительное условие на твой диапазон дат ставится в подзапрос. Posted via ActualForum NNTP Server 1.3 Да я сам подумав, понял почему он ругается на неверный GROUP BY. Имеено из-за ситуации, когда на одну дату имеется несколько значений. И какое из значений должен вернуть запрос не понятно. На самом деле на одну дату не может быть двух записей, этот вариант я уже придумал на ходу. Меня вот больше смутило, а по каким правилам тогда работал vfp6/7, позволявший выполнять такой запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 07:32:07 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
spock Меня вот больше смутило, а по каким правилам тогда работал vfp6/7, позволявший выполнять такой запрос. Ничего страшного, я находил ошибки и через 10 лет в своих программах :) Как говорят те, с кем я сейчас работаю: "Welcome to our club!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 10:22:29 |
|
||
|
Совместимость кода с vfp ole db provider v9
|
|||
|---|---|---|---|
|
#18+
Hi spock! > Меня вот больше смутило, а по каким правилам тогда работал vfp6/7, > позволявший выполнять такой запрос. Обычно выбиралась последняя (в физическом порядке) запись из всей группы. Это кстати часто играло с программистами злую шутку - в подобных таблицах как правило записи физически следуют в порядке возрастания дат, и увидев "правильный" результат многие не задумываются о том как он получен, и будет ли он всегда правильным :) P.S. Это тема также неоднократно поднималась на разных форумах. И приводились примеры неправильной работы запросов с "неполной группировкой" - которые MSFT совершенно справедливо запретил начиная с VFP8. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 00:39:21 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33391568&tid=1592975]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 492ms |

| 0 / 0 |
