powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить количество строк в выборке и саму выборку
8 сообщений из 8, страница 1 из 1
Получить количество строк в выборке и саму выборку
    #38480991
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

У нас ситуация следующая: есть PHP 5.3 и mssql2012. Нужно одновременно получать выборку из mssql и количество записей в ней.

Пока на ум приходит 2 варианта:
1) сначала выполнить искомый селект с COUNT(), сохранить в @RowCount, а потом вывести тот же селект, добавив поле @Count.
2) записать выборку искомого селекта во временную таблицу, а потом уже для неё сделать сначала COUNT() в @RowCount, а потом из неё селект * и поле @RowCount

Но по-моему это как-то не по фэншую.. Может есть варианты выполнить это как-то более эстетично?..

ps я занимаюсь sql, php другой человек пишет
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38480992
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select @@rowcount


не катит?
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38480993
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(*) over(),*
from sys.tables
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38481051
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зайцев Фёдор ,
Код: sql
1.
 SELECT *, @@rowcount AS 'ttt' FROM tbl_Units

выводит ноль в последнем столбце.. А если отдельный селект делать - то в принципе получается то же самое, что и у меня..

locky , во! то что надо! Спасибо! Как всегда все просто=))

Всем спасибо!
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38481092
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KasKasА если отдельный селект делать - то в принципе получается то же самое, что и у меня..Не то же самое, а в 2 раза менее затратно.
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38481271
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KasKas,

еще вариант без лишних чтений

Код: sql
1.
2.
3.
4.
SELECT SUM(1) AS cnt, m.id, MAX(m.colA), MAX(m.colB), ...
FROM MyTable AS m
WHERE ...
GROUP BY m.id WITH ROLLUP

, где MyTable.id - это ключевое поле. На выходе в строке с id = NULL будет количество в cnt
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38481393
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего себе все наговнокодили, кол-во элементов в таблице передавать столько раз, сколько элементов в таблице.
То есть при запросе 1000 записей, 999 полей передается лишние. Если они байта по 4, то ~4 кб в помойку при протоколе без сжатия.

Автор, может все таки сначала запрос, а потом select @@rowcount ? Или если так хотите в одной выборке, то что-то с union придумать, чтобы в последней строке кол-во записей было?
...
Рейтинг: 0 / 0
Получить количество строк в выборке и саму выборку
    #38485390
KasKas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgKasKasА если отдельный селект делать - то в принципе получается то же самое, что и у меня..Не то же самое, а в 2 раза менее затратно.
в нашем случае видимо все выполняется слишком быстро, чтобы это почувствовать. Говоря "то же самое" я имел ввиду количество кода=)

ShakillKasKas,

еще вариант без лишних чтений

Код: sql
1.
2.
3.
4.
SELECT SUM(1) AS cnt, m.id, MAX(m.colA), MAX(m.colB), ...
FROM MyTable AS m
WHERE ...
GROUP BY m.id WITH ROLLUP

, где MyTable.id - это ключевое поле. На выходе в строке с id = NULL будет количество в cnt
спасибо, может пригодится)

super-codeНичего себе все наговнокодили, кол-во элементов в таблице передавать столько раз, сколько элементов в таблице.
То есть при запросе 1000 записей, 999 полей передается лишние. Если они байта по 4, то ~4 кб в помойку при протоколе без сжатия.

Автор, может все таки сначала запрос, а потом select @@rowcount ? Или если так хотите в одной выборке, то что-то с union придумать, чтобы в последней строке кол-во записей было?
Думаю нет особого смысла заморачиваться. В этой выборке максимум пара сотен записей, так что овчинка выделки не стоит..
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить количество строк в выборке и саму выборку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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