Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка / 20 сообщений из 20, страница 1 из 1
10.01.2008, 23:26
    #35054387
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Плиз помогите как сделать выборку в таблице в столбе если нужно выбрать те строки где пусто
пробовал: SELECT ..... WHERE Table.Stolb="" не пашет((
...
Рейтинг: 0 / 0
10.01.2008, 23:50
    #35054407
olegv12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
"Пробел" и "Null" немного разные вещи.
...
Рейтинг: 0 / 0
11.01.2008, 07:21
    #35054602
oldfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
А чем EMPTY() не подходит?
...
Рейтинг: 0 / 0
11.01.2008, 07:53
    #35054628
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Empty() не оптимизируется.

Where Table.Stolb==space(len(Table.Stolb))


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.01.2008, 11:01
    #35055081
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Galyamov Rinat
Empty() не оптимизируется.


Сия сентенция проверена?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET DELETED OFF 

CREATE CURSOR test (f1 c( 10 ))

INDEX ON EMPTY(f1) TAG f1

SYS( 3054 , 11 )

SELECT * FROM test WHERE EMPTY(f1)
...
Рейтинг: 0 / 0
11.01.2008, 11:07
    #35055115
Выборка
надо сделать так:
SELECT ..... WHERE UPPER(Table.Stolb)=SPACE(N), где N - длина поля Table.Stolb
...
Рейтинг: 0 / 0
11.01.2008, 11:12
    #35055137
Выборка
ЗЫ. можно и без UPPER()
...
Рейтинг: 0 / 0
11.01.2008, 13:20
    #35055711
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Сия сентенция проверена?
....
INDEX ON EMPTY(f1) TAG f1

Полностью с Вами согласен в таком контексте!

Но все же мы понимаем, что такого рода индексы создавать на РЕАЛЬНЫХ
таблицах - некоторый изврат.

Если есть индекс по полю:
INDEX ON f1 TAG f1, что более вероятно, то создавать еще и индекс на empty()
?...


И тем не менее с Вашим утверждением, что при наличии индекса на empty()
оптимизация будет выполняться - полностью согласен.




Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.01.2008, 13:21
    #35055716
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Автору так же глядеть в сторону set ansi и ==


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.01.2008, 14:09
    #35055934
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Всем спасибо но к сожелению не работаеть в большинстве методов пишет : rised exception class EBDEngine Error with message "Capability not supported".
Может быть я не точно задал вопрос) Есть таблица кторая строится из 3-х таблиц sql запросом в ней есть столб "состояние счета" есть 3 радо батона при их нажатии должно выдавать:
1) все строки где состояние пустое 2)все строки где состояние не пустое 3)просто всю таблицу
Вот мой текст sql для создания таблицы:
SELECT Otvetstvenniy.OFilial,Otvetstvenniy.OOtvetstvenniy,Otvetstvenniy.Oklient,
Klienti.KVid,dogovora.DNomerDog,dogovora.DOtDate,dogovora.DSost,
dogovora.DOstatok,dogovora.Dcentr

FROM Otvetstvenniy,Klienti,dogovora
WHERE Otvetstvenniy.Oklient = Klienti.KKlient AND Klienti.KKlient = dogovora.DKlient
Вот кусок из програмы с использованием радио батона :
Query1->SQL->Text="SELECT Otvetstvenniy.OFilial,Otvetstvenniy.OOtvetstvenniy,Otvetstvenniy.Oklient,Klienti.KVid,dogovora.DNomerDog,dogovora.DOtDate,dogovora.DSost,dogovora.DOstatok,dogovora.Dcentr FROM Otvetstvenniy,Klienti,dogovora WHERE Otvetstvenniy.Oklient = Klienti.KKlient AND Klienti.KKlient = dogovora.DKlient AND dogovora.DSost=EMPTY()";
Query1->Active=false;
Query1->Active=true;
Видимо в 3-м радио батоне надо вставить просто текст который я использовал для создания таблици и он покажет все состояния а вот в первых 2-х как быть?
...
Рейтинг: 0 / 0
11.01.2008, 14:38
    #35056047
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Большая просьба, хотя бы ВНИМАТЕЛЬНО читайте то, что Вам отвечают.

Функция EMPTY() должна иметь параметр. То поле, которое она как раз и проверяет на пустоту. А результатом работы этой функции является логическое значение .T. или .F.

Это значит, что использовать эту функцию надо так:

Код: plaintext
1.
2.
3.
4.
5.
* Только пустые значения
Query1->SQL->Text="SELECT ... AND EMPTY(dogovora.DSost)";

* Только НЕ пустые значения
Query1->SQL->Text="SELECT ... AND NOT EMPTY(dogovora.DSost)";
...
Рейтинг: 0 / 0
11.01.2008, 16:59
    #35056634
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
При таком коде:
Query1->SQL->Text="SELECT Otvetstvenniy.OFilial,Otvetstvenniy.OOtvetstvenniy,Otvetstvenniy.Oklient,Klienti.KVid,dogovora.DNomerDog,dogovora.DOtDate,dogovora.DSost,dogovora.DOstatok,dogovora.Dcentr FROM Otvetstvenniy,Klienti,dogovora WHERE Otvetstvenniy.Oklient = Klienti.KKlient AND Klienti.KKlient = dogovora.DKlient AND EMPTY(dogovora.DSost)";
Выдает raised exception class EDBEngineError with message "Invalid use of keyword" Token: )
...
Рейтинг: 0 / 0
11.01.2008, 17:42
    #35056762
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Novice1234При таком коде:
Query1->SQL->Text="SELECT Otvetstvenniy.OFilial,Otvetstvenniy.OOtvetstvenniy,Otvetstvenniy.Oklient,Klienti.KVid,dogovora.DNomerDog,dogovora.DOtDate,dogovora.DSost,dogovora.DOstatok,dogovora.Dcentr FROM Otvetstvenniy,Klienti,dogovora WHERE Otvetstvenniy.Oklient = Klienti.KKlient AND Klienti.KKlient = dogovora.DKlient AND EMPTY(dogovora.DSost)";
Выдает raised exception class EDBEngineError with message "Invalid use of keyword" Token: )
А через что запрос идет. Похоже это что-то EMPTY() не понимает.
Если DSost имеет тип DATE или DATETIME то попробуй:
Код: plaintext
 AND dogovora.DSost = {}
...
Рейтинг: 0 / 0
11.01.2008, 17:45
    #35056780
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Таблица Paradox 7 тип dsost альфа
...
Рейтинг: 0 / 0
11.01.2008, 17:46
    #35056785
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Novice1234Таблица Paradox 7 тип dsost альфа А фокс тут причем?
...
Рейтинг: 0 / 0
11.01.2008, 17:47
    #35056792
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Да я по началу чтот проглючил не заметил)
...
Рейтинг: 0 / 0
11.01.2008, 17:54
    #35056817
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Novice1234Да я по началу чтот проглючил не заметил)
Исчерпывающий ответ

Если бы обращаешься к БД через ODBC или ADO, то драйвер выполняет запрос, а он синтаксиса фокса не знает. Потому ошибку дает.
...
Рейтинг: 0 / 0
11.01.2008, 17:55
    #35056823
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
А для прадокса не знаеш как сделать такое?)
...
Рейтинг: 0 / 0
11.01.2008, 18:09
    #35056894
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Novice1234А для прадокса не знаеш как сделать такое?)
С парадоксом не общался.
Если в поле строка, то попробуй:
Код: plaintext
... = "     "
Пробелов столько, какой ширины поле. Изврат, но должно сработать.

Что значит тип альфа, и как выглядит пустое значение для него - не знаю.

Может все-таки там NULL, тогда:
Код: plaintext
... dogovora.DSost is NULL
...
Рейтинг: 0 / 0
11.01.2008, 18:13
    #35056907
Novice1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Да заворкало спасиб большое всем кто помогал)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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