Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

Длинная строка запроса   Найти похожие ветки 

 
e-mike   (2003-01-20 11:02) [0]

Имеется SQL запрос вида
select kodvv,sum(v) as sv from vib where kodpr in (1,3,4) group by kodvv

Если так записать, то выполняется нормально.
Проблема в том, что если в скобках после "where kodpr in " указывать не 3 а более 400 кодов (приблизительно), то выскакивает ошибка
Access violation at address 4c5fd41 in module "idsql32.dll". Write of address 03de1000.

Вызываю через TQuery. БД - dBase

Я думаю, это из=за слишком длинной строки запроса.
Попытка разбить его на несколько строк, т. е.
Query.sql.add(..);
Query.sql.add(..);
не к чему не привели.

Не подскажете, как с этим бороться?


 
filyandiya   (2003-01-20 11:13) [1]

дык запрос таким образом короче не станет:)))

а коды то откуда беруться?? их в отдельную таблицу скинуть нельзя?
фильтровать по признаку в join запросе?


 
e-mike   (2003-01-20 11:16) [2]


> а коды то откуда беруться?? их в отдельную таблицу скинуть
> нельзя?
> фильтровать по признаку в join запросе?


Коды выбираются пользователем из листбокса и заносятся в StringList.

Т.е. как я понял оптимальное решение - скинуть коды в отдельную таблицу?


 
Johnmen   (2003-01-20 11:20) [3]

За ради эксперимента :
1. разбить условие в where на два по 200 (на 4 по 100)
2. перенести логику условия в фильтр
3. пересмотреть концепцию построения запроса


 
e-mike   (2003-01-20 11:42) [4]


> За ради эксперимента :
> 1. разбить условие в where на два по 200 (на 4 по 100)

Не получится, т.к. есть sum(v) и group by.

> 2. перенести логику условия в фильтр

Вот это возможно. Но тут тоже проблема с group by
Я делаю

Query.Filter:="kodpr in "+prlist;
Query.filtered:=true;
Query.SQL.add("select kodvv,sum(v) as v from vib"+
" group by kodvv order by kodvv");

Пишет field kodpr not fount.
Добавляю в селект поле kodpr - пишет
when group by exists, every simple field in projectors must be in group by




 
mad0max   (2003-01-20 11:46) [5]

Да пиши лучше в отдельную табличку, может оно и выгадает, что вставка + join займет меньше времени чем select с in.... и мешьше проблем


 
Johnmen   (2003-01-20 11:57) [6]

1. имелось в виду where (kodpr in (1,2,3)) or (kodpr in (4,5,6)) or ...
2. да, не выйдет...

видимо, лучший вариант, как было сказано, в отд.табл.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.16 c
3-15501
SONY
2003-01-21 06:45
2003.02.06
Interbase+PHP


1-15544
stim
2003-01-28 10:50
2003.02.06
Как скопировать программу во время её выполнения ?


14-15832
Дружина им. Ленина
2003-01-22 15:19
2003.02.06
Подскажите где скачать Turbo Bascalъ 7


6-15785
Олежик Младший
2002-12-14 09:19
2003.02.06
Нужен пример ....


3-15407
Melamed
2003-01-21 20:20
2003.02.06
Как отследить изменение значения в LookUp-поле?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский