Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как считать кол-во строк? 
:(
    Опции темы
ratex
Дата 13.6.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.6.2006

Репутация: нет
Всего: нет



Есть исходная таблица Mess с полем Date. Необходимо вывести общее количество строк, удовлетворяющих условию Mess.date="2006". Как будет выглядеть запрос? Как подсчитать количество? 
PM MAIL   Вверх
bas
Дата 13.6.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Код

select count(Mess.date) from Mess  
where EXTRACT(YEAR FROM Mess.date) =2006
  

Это сообщение отредактировал(а) bas - 13.6.2006, 13:28
PM MAIL   Вверх
Cashey
Дата 13.6.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



bas, насколько я понимаю, FoxPro такой синтаксис не поддерживает.
Правильно запрос будет выглядеть таким образом:
Код

select count(Mess.date) from Mess  ;
where YEAR(Mess.date) =2006;
into array anCount

Количество записей будет записано в anCount[1]. Но если запрос не отработает (т.е. _tally = 0) то это значение будет false. Что не удобно, так что проще смотреть на значение переменной _tally
Еще вариант,
Код

SELECT Mess
COUNT TO nCount FOR YEAR(Mess.date) =2006

количество записей будет записано в переменную nCount. но такой способ будет сильно тормозить на больших базах.
 


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
bas
Дата 13.6.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(Cashey @  13.6.2006,  15:38 Найти цитируемый пост)
насколько я понимаю, FoxPro такой синтаксис не поддерживает.

Забыл.
Запрос  из 88 тыс. записей 
Код

select count(datа) from dopl where year(datа)=2006

Цитата

Selected 1 record in 1.98 seconds
  

Это сообщение отредактировал(а) bas - 13.6.2006, 17:38
PM MAIL   Вверх
Cashey
Дата 13.6.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Цитата(bas @  13.6.2006,  18:37 Найти цитируемый пост)
Запрос  из 88 тыс. записей 

код FoxPro    
1:    
select count(datа) from dopl where year(datа)=2006    

Цитата    

Selected 1 record in 1.98 seconds
    
  

ну эти цифры зависят от многих факторов, частоты процессора, объема оперативки, загруженности процессора на момент выполнения операции, доп. установок SELECT... 


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
ratex
Дата 14.6.2006, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.6.2006

Репутация: нет
Всего: нет



Как в последствии просмотреть значение переменной, в которую сохраняется значение количества записей? Уточню, в поле date_ значение даты записывается в виде, например 06/14/2006. Изменится ли от этого запрос? 
PM MAIL   Вверх
Cashey
Дата 14.6.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Цитата(ratex @  14.6.2006,  05:05 Найти цитируемый пост)
Как в последствии просмотреть значение переменной, в которую сохраняется значение количества записей? Уточню, в поле date_ значение даты записывается в виде, например 06/14/2006. Изменится ли от этого запрос? 

тип даты задается установкой SET DATE и одинакова как для типа данных так и для обробатывающих их функций, поэтому запрос от этого никак не изменится. а к переменной обращатся как к переменной. 


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
bas
Дата 14.6.2006, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(ratex @  14.6.2006,  04:05 Найти цитируемый пост)
Уточню, в поле date_ значение даты записывается в виде, например 06/14/2006. Изменится ли от этого запрос?  

Запрос не измениться.
А формат даты зависит от настроек
set date ....
set century on/off


Цитата

 SET DATE [TO] AMERICAN | ANSI
 | BRITISH | FRENCH | GERMAN
 | ITALIAN | JAPAN | USA | MDY
 | DMY | YMD

 AMERICAN           ¦ ММ/ДД/ГГ
 ANSI                    ¦ ГГ.ММ.ДД
 BRITISH/FRENCH ¦ ДД/ММ/ГГ
 GERMAN              ¦ ДД.ММ.ГГ
 ITALIAN               ¦ ДД-ММ-ГГ
 JAPAN                  ¦ ГГ/ММ/ДД
 USA                     ¦ ММ-ДД-ГГ
 MDY                     ¦ ММ/ДД/ГГ
 DMY                     ¦ ДД/ММ/ГГ
 YMD                     ¦ ГГ/ММ/ДД
  

Это сообщение отредактировал(а) bas - 14.6.2006, 08:27
PM MAIL   Вверх
ratex
Дата 14.6.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.6.2006

Репутация: нет
Всего: нет



Спасибо! а ещё вопрос. Создаю таблицу Free table, содержащую одно поле, но после этого мне не удаётся редактировать её. При нажатии на кнопку Browse, появляется таблица, но добавить запись невозможно... Нужно установить какие-то права? 
И к тому же правая часть вкладки Fields (Поля) конструктора неактивна (т.е. область Display, Field validation ), а, видимо там и задаются все необходимые параметры для ввода данных в таблицу. Почему же она неактивна? 

Это сообщение отредактировал(а) ratex - 14.6.2006, 11:00
PM MAIL   Вверх
Cashey
Дата 14.6.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



ratex, на форуме есть правило: один топик - один вопрос.
и имей ввиду, что записи в таблицу добавляются командами INSERT INTO или APPEND FROM[BLANK]. Почитай хелп 


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
ratex
Дата 17.6.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.6.2006

Репутация: нет
Всего: нет



Поэксперементировал с запросами для подсчёта записей!
первый вариант:
Код

select messages
COUNT TO nCount FOR recvdate = CTOD(mydate)
hisform.text1.value = ncount

второй вариант:
Код

select count(Messages.recvdate) from Messages  ;
where recvdate =CTOD(mydate);
into array anCount
thisform.text1.value = anCount[1]

Оба запроса выполняются за 2-3 секунды! В таблице Messages уже 180000 записей (с каждым днём увеличивается на 500-1000 записей). Это нормальное время??? или есть возможность убыстрить подсчёт? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.