-
Здравствуйте, есть БД и delphi. Соединение через ADO c access.
В таблице "Or" есть поле "IIF" в котором содержится или значение "Yes" или ничего! Т.е. может быть Yes, пустота или NULL. Мне необходимо посчитать количество записей в которых Yes!
Я зашел в Access и вижу, что поле IIF пустое полностью (не знаю NULL ТАМ ИЛИ ПУСТОТА)!!! Т.е. в нем нигде нет "Yes". Всего в таблице 20 записей (показывает Access). Но когда я пишу в Delphi запрос:
frmmain.ADOQuery1.SQL.Add('SELECT COUNT(Код) FROM Or where (IIF<>'+Chr(39)+'Yes'+chr(39)+')');
То на выходе получаю всего 1 запись!!!
Если пишу так:
frmmain.ADOQuery1.SQL.Add('SELECT COUNT(Код) FROM Or where (IIF<>'+Chr(39)+'Yes'+chr(39)+' or ifdel is Null)')
То получаю 19 записей!!! 1 пропадает!
Если пишу так:
SELECT COUNT(Код) FROM Or where (iIf is NULL or iIf='+Chr(39)+chr(39)+')');
Получаю 18 записей!!! 2 пропадает!
ЧТО ЖЕ не так!!!
Подскажите, пожалуйста, правильный запрос!
-
У меня таблица не or называется а ORDER123 :)))
-
count(*)
-
А запрос то какой использовать?
-
Select Count работает неверно! Почему?
селект каунт всегда работает верно.
-
Вы не поняли! :)
Я спрашивал, какой из трех вариантов Select Count (приведены в первом посте) писать в результате?
-
никакой.
Получаю 18 записей!!! 2 пропадает!
каунт(поле) - не считает записи. он считает значения.
-
Честно говоря не понятно...
1. Ставлю в Count *:
SELECT COUNT(*) FROM Order123 where (iIf is NULL or ifdel='+Chr(39)+chr(39)+')'
Получаю те же 22 записи! 1 пропадает.
Да и потом, если Count считает значения, то чем ему не нравиться поле "Код" (которое счетчик) где значения есть всегда!
2. Прошерстил Инет, везде пишут:
"Другой пример. Допустим, надо узнать просто количество записей. Тогда то же самое, но без WHERE:
SELECT COUNT(*) FROM `table`"
т.е. все как у меня
3. Пишу аналогичный SQL запрос на выборку записей:
'Select * from Order123 where (iIf is NULL or iIf ='+Chr(39)+chr(39)+') order by КОД'
Точно также дает всего 22 записи!!!
ПОЧЕМУ???
-
потому что в выборку попало столько, сколько вернул твой count(*) .... where
неужели и это непонятно?
-
where (iIf is NULL
а это что за фигня?
это поле или это обращение к функции IIF?
таблица по имени OR, поле по имени IIF .....
а не дофига ли здесь ребусов для движка?
-
у меня названия полей и таблицы нормальные (несистемные). решил их упростить чтобы вам пгнятно было нои получилась ерунда.... приношу извиненния.
и то что select возвращает то же что и count я вижу. Вопрос в том как сделать так чтобы возвоащалось все записи - без потерянных
-
у меня названия полей и таблицы нормальные (несистемные). решил их упростить чтобы вам пгнятно было нои получилась ерунда.... приношу извиненния.
и то что select возвращает то же что и count я вижу. Вопрос в том как сделать так чтобы возвоащалось все записи - без потерянных
-
и то что select возвращает то же что и count я вижу.
Какие тогда претензии к каунту?
Читаем книжки по sql и учимся формулировать where
Вопрос в том как сделать так чтобы возвоащалось все записи - без потерянных
А что, разве непонятно, что вся проблема в содержимом полей которые во where?
и содержимое таково, что 2 записи в твой where не попадают.
а то каунт, шмаунт, парамаунт.....
-
Буду пытаться разбираться!
Спасибо!