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

Вниз

Query глючит?   Найти похожие ветки 

 
Vladimir*   (2002-09-13 10:31) [0]

Hello All!
Вот такая конструкция
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.ADD("SELECT COUNT(DISTINCT NMB1) FROM BAZA");
Query2.SQL.ADD(" WHERE NMB2 ="+""""+f4+"""");
Query2.SQL.ADD(" AND PERIOD BETWEEN "+""""+f5+"""");
Query2.SQL.Add(" AND "+""""+f6+"""");
Query2.Open;
работает правильно, если у DBF-таблицы (BAZA) нет индекса, а если есть, то совсем даже криво((
Посоветуйте, плз, как лечить?


 
Johnmen   (2002-09-13 10:35) [1]

И в чем же кривизна то ? И что лечить ?


 
Vladimir*   (2002-09-13 10:41) [2]

Так чтоб и индексом считала ПРАВИЛЬНО!


 
ЮЮ   (2002-09-13 10:51) [3]

Для начала поставь * вместо COUNT(DISTINCT NMB1) и сравни, какие записи возвращаются в первом случае, а какие во втором. От того и пляши


 
Val   (2002-09-13 10:52) [4]

попробуйте сделать выборку с подзапросом, типа
select count(nmb1) from
(select distinct nmb1 from...)


 
Vladimir*   (2002-09-13 10:58) [5]

да пробовал все, даже в фоксе пересчитывал, и с Query и
ручками считал, репу морщил, вывод один - индекс мешает.
хотя по идее не должен...
можно его отключить как-то?


 
Val   (2002-09-13 11:06) [6]

drop index..
query..
create index..


 
ЮЮ   (2002-09-13 11:13) [7]

>можно его отключить как-то?
ИЗМЕНИ условие, например,
WHERE NB2<>0 and NMB2 ="+""""+f4+""""AND .
Условие с <> приводит к полному сканированию таблицы, тем самым "отключая" индексы


 
Vladimir*   (2002-09-13 13:01) [8]

ни хрена он не отключает(( <>0


 
VAleksey   (2002-09-13 13:09) [9]

Я что-то так и не уловил в чем кривизна. Пожалуйста пример таблички. И пример того что возвращает запрос из проиндексированной таблицы а что из не проиндексированной.
И вообще подобный запрос работоет ?
Конечно проверю ..., но просто сейчас сомнения одолели :).


 
VAleksey   (2002-09-13 13:14) [10]

Запросик работает. В чем кривизна ?


 
Vladimir*   (2002-09-13 14:29) [11]

BAZA - dbf table
NMB1, NMB2, PERIOD - символьные поля, построен индекс c тегом NMB2+PERIOD.
Так вот запрос
Query1.Close;
Query1.SQL.Clear;
Query1.DatabaseName:="E:\BAZA";
Query1.SQL.ADD("SELECT COUNT(NMB1) FROM BAZA");
Query1.SQL.ADD(" WHERE NMB2 ="+ """+f4+""");
Query1.SQL.ADD(" AND PEROID BETWEEN "+"""+f5+""");
Query1.SQL.ADD(" AND "+"""+f6+""");
Query1.Open;
возвращает количество записей по полю NMB1, удовлетворяющих условию NMB2=F4 и лежащих в диапазоне PERIOD от F5 до F6, правильно, их 60 записей, и не важно, с индексом таблица или нет.

а вот запрос
Query2.Close;
Query2.SQL.Clear;
Query2.DatabaseName:="E:\BAZA";
Query2.SQL.ADD("SELECT COUNT(DISTINCT NMB1) FROM BAZA");
Query2.SQL.ADD(" WHERE NMB2 ="+"""+f4+""");
Query2.SQL.ADD(" AND PERIOD BETWEEN "+"""+f5+""");
Query2.SQL.Add(" AND "+"""+f6+""");
Query2.Open;
по идее должен возвращать количество НЕПОВТОРЯЮЩИХСЯ записей по полю NMB1, удовлетворяющих условию NMB2=F4 и лежащих в диапазоне PERIOD от F5 до F6, но...
если индексного файла нет (таблица не индексирована), тогда получается 15 записей, и это правильный ответ,
но если таблица индексирована, тогда почему-то 59...
что за хрень??


 
Vladimir*   (2002-09-13 14:52) [12]

кстати, а вложенные запросы типа select ... from (select ... ) она понимает?


 
Val   (2002-09-13 15:13) [13]

>Vladimir* (13.09.02 14:52)
так это, все кнопки в руки :)


 
Vladimir*   (2002-09-13 16:00) [14]

ага, попробовал, а в ответ
NESTED SELECT NOT SUPPOR
во бли!
сделал уже индекс уникальный, один хрен, считает неправильно((


 
Val   (2002-09-13 16:10) [15]

>Vladimir* (13.09.02 16:00)
по поводу вложенных запросов см. Local SQL Help->Views



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
1-7946
Dmitry Toropov
2002-09-24 06:58
2002.10.03
расшифровать исключение EMCIDeviceError


6-8099
Podlec
2002-08-03 23:48
2002.10.03
SMS


7-8193
МИФИст
2002-07-25 21:30
2002.10.03
Как 2000 разогнать?


1-7996
^SANYA
2002-09-20 21:27
2002.10.03
CSS in IE 5.0


3-7822
Beginner2
2002-09-12 10:09
2002.10.03
DBGrid+ADOTable





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский