Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT / 25 сообщений из 44, страница 1 из 2
08.02.2007, 16:33
    #34316605
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Здравствуйте!
Выполняю SQLExecDirect(..., "SELECT * FROM table",...).
Как мне узнать количество записей, которые вернулись?
...
Рейтинг: 0 / 0
08.02.2007, 16:46
    #34316659
SnowMan2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Например выполнить еще один запрос
SELECT Count(*) FROM table
...
Рейтинг: 0 / 0
08.02.2007, 16:50
    #34316683
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Плохо, еще раз к базе обращаться... Я сделал один раз селект и хочу узнать количество записей
...
Рейтинг: 0 / 0
08.02.2007, 17:01
    #34316727
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOПлохо, еще раз к базе обращаться... Я сделал один раз селект и хочу узнать количество записейтогда читай все записи с сервера и считай в процессе
...
Рейтинг: 0 / 0
08.02.2007, 17:52
    #34316954
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Это как?
...
Рейтинг: 0 / 0
08.02.2007, 17:53
    #34316963
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOЭто как?в цикле Next и counter++ до конца набора данных;
...
Рейтинг: 0 / 0
08.02.2007, 18:01
    #34316994
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
А понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)
...
Рейтинг: 0 / 0
08.02.2007, 18:02
    #34317001
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOА понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)

Когда час пройдет, сообщи ему, чтобы пошел покурить пока. ;)
...
Рейтинг: 0 / 0
08.02.2007, 18:05
    #34317015
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
ХП как вариант.
...
Рейтинг: 0 / 0
08.02.2007, 18:14
    #34317067
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Что такое ХП?
...
Рейтинг: 0 / 0
08.02.2007, 18:27
    #34317112
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOЧто такое ХП?

Хранимая процедура. Тебе данные не надо будет переганять. Только число.
...
Рейтинг: 0 / 0
08.02.2007, 18:40
    #34317158
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Не очень понимаю, как она поможет... объясните по подробнее пжлста.
...
Рейтинг: 0 / 0
08.02.2007, 19:00
    #34317220
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOА понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)тогда SnowMan2Например выполнить еще один запрос
SELECT Count(*) FROM table
Либо считает сервер, либо клиент, третьего не дано.
...
Рейтинг: 0 / 0
08.02.2007, 19:16
    #34317272
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
Нет, я в упор не понимаю, неужели никто не думал как это по-людски сделать? То, что вы предлагаете, и на стороне клиента, и на стороне сервера перелапачивает уже полученный набор еще раз. Должно ведь куда-то попадать результирующее количество записей. В СУДБ есть переменная @@ROWCUNT, просто у меня не получается прилепить ее к результирующему множеству. Наверняка должен быть способ, получить количество записей, не перебирая их в тупую.
...
Рейтинг: 0 / 0
08.02.2007, 19:23
    #34317286
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOНаверняка должен быть способ, получить количество записей, не перебирая их в тупую.Строго говоря, не должен. Более того, возможны ситуации, когда это в принципе невозможно.
...
Рейтинг: 0 / 0
08.02.2007, 19:36
    #34317305
OIO
OIO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
В любом случае набор записей сервер вернул клиенту, почему не должно быть способа получить количество записей этого набора?
...
Рейтинг: 0 / 0
08.02.2007, 19:37
    #34317306
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOВ любом случае набор записей сервер вернул клиенту, почему не должно быть способа получить количество записей этого набора?Сервер возвращает клиенту не весь набор записей, а ровно то количество, которое клиент запросил. Остальные записи сервер может даже не вычислять.
...
Рейтинг: 0 / 0
08.02.2007, 19:42
    #34317318
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIOНет, я в упор не понимаю, неужели никто не думал как это по-людски сделать? То, что вы предлагаете, и на стороне клиента, и на стороне сервера перелапачивает уже полученный набор еще раз. Должно ведь куда-то попадать результирующее количество записей. В СУДБ есть переменная @@ROWCUNT, просто у меня не получается прилепить ее к результирующему множеству. Наверняка должен быть способ, получить количество записей, не перебирая их в тупую.

Думаю этот вопрос лучше задать в профильный форум по вашему серверу.
И посмотреть еще раз на API, которым пользуетесь для доступа к базе.
...
Рейтинг: 0 / 0
08.02.2007, 20:38
    #34317392
совет...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
для ODBC посмотрите на SQLGetDiagRec и SQLGetDiagField, они предоставляют диагностичискую информацию для дескриптора. может, и количество записей там будет, а мож и ответ сервера типа "xxx rows selected"
...
Рейтинг: 0 / 0
08.02.2007, 21:16
    #34317452
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
SnowMan2 пишет:

> Например выполнить еще один запрос
> SELECT Count(*) FROM table

Это бесполезно. Два запроса никак не связаны между собой.
Не факт что потом ТОТ запрос вернет именно ЭТО количество строк.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.02.2007, 21:16
    #34317453
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
miksoft пишет:
> Плохо, еще раз к базе обращаться... Я сделал один раз селект и хочу
> узнать количество записей
>
> тогда читай все записи с сервера и считай в процессе

Правильно, это единстенно правильный вариант.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.02.2007, 21:17
    #34317454
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIO пишет:

> А понял, но это не подходит - мне прийдется перелапатить все записи, а
> если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)

Другого варианта все равно нет.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.02.2007, 21:18
    #34317455
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIO пишет:

> Не очень понимаю, как она поможет... объясните по подробнее пжлста.

Да никак она не поможет.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.02.2007, 21:20
    #34317458
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIO пишет:
> попадать результирующее количество записей. В СУДБ есть переменная
> @@ROWCUNT, просто у меня не получается прилепить ее к результирующему
> множеству. Наверняка должен быть способ, получить количество записей, не
> перебирая их в тупую.

Да ты можешь его прилепить, для этого достаточно после этого SELECT-а
сделать еще один, SELECT @@rowcount.
Но смысла это делать нет никакого, потому что ты получишь его
только ПОСЛЕ выборки основного набора данных. А если ты уже выберишь
его, то ты уже будешь знать количество строк.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.02.2007, 21:34
    #34317479
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество записей SELECT
OIO пишет:

> Выполняю SQLExecDirect(..., "SELECT * FROM table",...).
> Как мне узнать количество записей, которые вернулись?


Короче, резюмирую.
Чтобы узнать количество записей , которые вернулись,
есть два способа.

1) Профетчить все записи и посчитать их.
(SQLFetch() ... )

2) Вызвать SQLRowCount() --- не торопитесь радоваться.
SQLRowCount() не гарантирует возвращение количества записей
до того, как вы не профетчите все записи. И даже больше -
в последних редакциях ODBC он для SELECT-а вообще ничего не
гарантирует (и это правильно!).

Так что фактически при наличии двух способов способ этот
на самом деле только один.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT / 25 сообщений из 44, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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