Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / фокс 2.6 странная работа select / 13 сообщений из 13, страница 1 из 1
17.12.2008, 17:39
    #35720758
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
а кто-нибудь знает, почему в фоксе 2.6 запрос (1)

select count(*) from tab where status=4

не зависит от состояния set deleted

а запрос (2)

select count(*), status from tab group by status

зависит???

т.е. реально (1) выдает число 10398 как для set deleted off так и для set deleted on

а (2) выдает несколько строк среди которых та что для status=4 показывает разные значения
...
Рейтинг: 0 / 0
17.12.2008, 19:11
    #35721005
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
Потому, что надо использовать "правильный" синтаксис запроса с Group by, что бы не получать "косяков"
...
Рейтинг: 0 / 0
17.12.2008, 19:12
    #35721007
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
в смысле?
...
Рейтинг: 0 / 0
18.12.2008, 00:33
    #35721321
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
Вообще-то, разницы быть не должно. Разве что, вы выполняете запросы "в динамике". Т.е. какой-то другой пользователь в это же время удаляет/добавляет/изменяет записи.

Попробуйте подсчитать количество записей, помеченных как удаленные для status=4

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SET DELETED OFF
select tab
SET ORDER TO  0 
calculate cnt() to kol_del for deleted() and status= 4 
calculate cnt() to kol_all for status= 4 

?"Всего", m.kol_all
?"Удалено", m.kol_del
?"Осталось", m.kol_all - m.kol_del
...
Рейтинг: 0 / 0
18.12.2008, 11:19
    #35721787
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
BorisTheBlade,

select count(*), status from tab WHERE !DELETED() group by status
...
Рейтинг: 0 / 0
18.12.2008, 17:16
    #35722998
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
FAMBorisTheBlade,

select count(*), status from tab WHERE !DELETED() group by status

это я уже сделал, но мне непонятно почему два очень похожих запроса работают по разному и в документации об этом ничего нет. я совершенно случайно наткнулся на эту особенность или глюк уж не знаю.

написали бы, что результат select может быть непредсказуем в случае отсутствия явного указания deleted()

все выполнялось одним пользователем на локальной машине.
...
Рейтинг: 0 / 0
18.12.2008, 17:18
    #35723005
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
и кстати в microsoft foxpro оба представленных запроса работают корректно, в соответствии с установкой set deleted ...

похоже на глюк.
...
Рейтинг: 0 / 0
18.12.2008, 17:20
    #35723012
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
в смысле microsoft visual foxpro
...
Рейтинг: 0 / 0
18.12.2008, 18:20
    #35723167
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
авторselect count(*) from tab where status=4
не зависит от состояния set deleted
Правильно этот запрос отрабатывает в FPD26, учитывая текущее значение sed deleted.
Ищите у себя косяк
...
Рейтинг: 0 / 0
19.12.2008, 01:11
    #35723607
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
В 2.6 состояние set deleted должно учитываться.
...
Рейтинг: 0 / 0
19.12.2008, 15:48
    #35724993
BorisTheBlade
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
сегодня еще раз попробовал:

set deleted off
select count(*) from tab && 10511
set deleted on
select count(*) from tab && 10511

close all
use tab
set deleted off
count to m.i && 10511
set deleted on
count to m.i && 10508

может это из-за индексов, есть несколько штук в том числе по deleted()?
...
Рейтинг: 0 / 0
19.12.2008, 16:23
    #35725109
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
Для проверки кривых индексов попробуй их удалить и повторить тест.

Также возможно кривые сами таблицы. Перезалей данные в новую таблицу, удали парочку записей и повтори проверку.
...
Рейтинг: 0 / 0
19.12.2008, 22:48
    #35725612
alextashk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фокс 2.6 странная работа select
Перестал использовать сложный Select с фильтром по Deleted()
после того как получил разные результаты (разница была только в том, что в одной таблице указатель стоял на помеченной на удаление, а при следующим запросе стоял на обычной записи).
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / фокс 2.6 странная работа select / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]