Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

Как подбить количество возращаемых записей?   Найти похожие ветки 

 
YuraKiller   (2003-05-25 15:38) [0]

Мне нужно узнать количество записей результатирующего набора.
Как это можно красиво сделать?

Запрос например: select * from main where type=10 and code>100

Как это можно сделать не посылая : select count(*) from main where type=10 and code>100 ещё раз.

Может есть какое-то свойство или оператор?...


 
Engel   (2003-05-25 15:41) [1]

query.recordcount


 
Sergey Masloff   (2003-05-25 20:17) [2]

>Как это можно сделать не посылая : select count(*) from main >where type=10 and code>100 ещё раз.
Все остальные способы приводят к фетчу ВСЕХ записей на клиента. Так что хорошо подумай, может стоит сделать select count(*) и узнать что там таких записей полтора миллиона или узнать об этом же после получаса ожидания пока они тебе на клиента приползут?


 
DrPass   (2003-05-25 21:44) [3]

select count(*) - это и есть самый красивый и разумный вариант


 
YuraKiller   (2003-05-27 01:33) [4]

Пасибо!


 
Verg   (2003-05-27 08:46) [5]

Если транзакция readcommited,


select * from main where type=10 and code>100


... а здесь в другой транзакции в main были добавлены/удалены записи удовлетворяющие условию и сделан commit, то


select count(*) from
main where type=10 and code>100 ещё раз.


...будет ли результат второго запроса равен колечеству выбранных записей в первом?


 
Danilka   (2003-05-27 08:54) [6]

Verg © (27.05.03 08:46)
угу, и для "обьективной реальности" остается только уйти нафиг с IB на сервак поддерживающий транзакции Dirty Read, и на нем уже делать count(*)
;))


 
Alexandr   (2003-05-27 09:01) [7]

2Verg © если очень хочется, сделай repeatableRead транзакцию.

2Danilka © DBF? Paradox? Все что вы пишите есть бред сивой кобылы.


 
Verg   (2003-05-27 09:06) [8]


> Alexandr © (27.05.03 09:01)


Мне-то чего хочется?

Вопрос по-моему "простой" - где берут RowsAffected в IB?


 
Danilka   (2003-05-27 09:11) [9]

Alexandr © (27.05.03 09:01)
тема ветки, вообще-то IB5.x
к тому-же, похоже, даже смайлики не на всех действуют :))


 
Danilka   (2003-05-27 09:19) [10]

Alexandr © (27.05.03 09:01)
Ладно, разжую, там где есть транзакции, невозможно на 100% с уверенностью сказать, сколько реально записей в таблице в данный момент.
Конечно, таблицы и задачи, в которых идет вставка новых записей несколько штук в секунду очень-очень редки, и в любом случае, для них нет необходимости смотреть кол-во записей.
В то-же время, при наличии даже двух пользователей есть какая-то вероятность, что количество, например, счетов-фактур через секунду будет на 1 больше, чем только-что показал count(*)

Да и там где транзакций нет, тоже нельзя с 100% уверенностью сказать что секунду назад сделаное count(*) - правильное. :))


 
Orlan Master   (2003-05-27 13:41) [11]

На всякий случай: именно там, где есть транзакции, можно с уверенностью сказать, сколько записей было на момент транзакции. Просто операцию по расчету кол-ва записей необходимо производить ВНУТРИ ОДНОЙ И ТОЙ ЖЕ ТРАНЗАКЦИИ, а уровень изоляции не должен быть DirtyRead (ReadUncommited). Для MSSQL, например, если выборка делается из хранимки, то можно кол-во записей впендюрить в переменную, и ее значение считать непосредственно из переменной. Иными словами, из хранимки можно одновременно получить и селектовую выборку и значения возвращаемых переменных.
М.б. в IB есть нечто похожее.


 
YuraKiller   (2003-05-28 00:50) [12]

Да.., ну Вы и бадягу замесили.. :-))


 
Proton   (2003-05-28 07:55) [13]

Наверное в данном случае пользователя устроит "приблизительное" количеество записей. А если он будет выводить данные то он всегда сможе использовать recordcount.


 
Danilka   (2003-05-28 08:00) [14]

Proton © (28.05.03 07:55)
Ладно, признаюсь, с моей стороны все посты в этой ветке - просто флуд, сначала на:
Verg © (27.05.03 08:46)
на то утверждение, что если одна транзакция меняет данные, то транзакция стартовавшая раньше их не видит, я начал флудить что в могопользовательских БД всегда есть вероятность того, что данные устарели.

Можно их смело прибить.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
14-60402
Rafik
2003-05-26 10:26
2003.06.19
Не соедениться с MSSQL


1-60114
agentru
2003-06-05 22:30
2003.06.19
Создание программы случайных чисел!


3-60069
alienka
2003-05-27 11:11
2003.06.19
KeyList в колонке DBGridEh


1-60150
Zew
2003-06-04 18:19
2003.06.19
через определённое время прибавлять число


3-60054
Term
2003-05-28 10:21
2003.06.19
Переиндексация





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский