Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-7925
tytus
2002-09-23 19:53
2002.10.03
Вторая форма


1-7992
Semion
2002-09-21 07:49
2002.10.03
Напомните


1-7975
Дмитрий Баранов
2002-09-20 18:30
2002.10.03
Смещение относительно базового адреса


1-8011
AndreyS
2002-09-20 14:39
2002.10.03
3D примитивный компонент


1-7942
Link
2002-09-19 19:23
2002.10.03
Закачка названий файлов из директории в ComboBox