declare @Sum int
set @Sum = 0
declare @RowCount int
set @RowCount = 0
declare @TableName nvarchar(128)
declare @SqlScript nvarchar(1024)
declare cur cursor local read_only forward_only static for
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
open cur
fetch next from cur into @TableName
while @@fetch_status = 0 begin
set @SqlScript = 'select @RowCount = count(*) from [' + @TableName + ']'
exec sp_executesql @SqlScript, N'@RowCount int output', @RowCount output
-- либо так, но так будут выбираться все строки таблиц, а не их число,
-- и так лучше НЕ делать, ибо все зависнет напрочь
-- exec ('select * from [' + @TableName + ']')
-- set @RowCount = @@rowcount
set @Sum = @Sum + @RowCount
fetch next from cur into @TableName
end
close cur
deallocate cur
select @Sum
узнать сумму строк из списка таблиц
Вот есть запрос, который возвращает список таблиц бд. Как можно узнать сумму всех строк во всех таблицах?
Что значит "сумму строк"?
телепатия подсказывает количество строк во всех таблицах. собственно показывайте, что сделали, и укажите конкретную проблему.
средствами БД - вряд-ли. написать примитивный скрипт, который будет перебирать таблицы, базы и суммировать строки.
Вот есть запрос, которыя возвращает список таблиц:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
так вот как подсчитать количество строк, если уже есть список таблиц, или может есть другой способ подсчета?
Все это нужно сделать средствами бд.
если это MySQL (как я догадываюсь) то так:
[highlight=sql]
select sum(table_rows) from information_schema.tables where table_schema='DATABASE';
[/highlight]
где DATABASE - нужная база
интересно, кому нужна такая инфа? в какой статистике она использоваться будет
Цитата: squirL
СУБД указать вам не позволяет подписка о неразглашении?
если это MySQL (как я догадываюсь) то так:
[highlight=sql]
select sum(table_rows) from information_schema.tables where table_schema='DATABASE';
[/highlight]
где DATABASE - нужная база
если это MySQL (как я догадываюсь) то так:
[highlight=sql]
select sum(table_rows) from information_schema.tables where table_schema='DATABASE';
[/highlight]
где DATABASE - нужная база
Использую MS SQL Express 2005.
Пробывал ваш запрос, но ругается на table_rows
Цитата: oxotnik333
интересно, кому нужна такая инфа? в какой статистике она использоваться будет
погляди в phpMyAdmin, например :)
Evgeni
ну поглядите в information_schema или как там служебная таблица называется. поищите сами схожие поля.
Еще можно просто скрипт написать, который все посчитает:
Код:
SELECT COUNT(*) AS records_count FROM table_name
это не то?
По этому предлагаю формировать запрос для каждой таблицы динамически, меняя имя таблицы и получая по каждой таблице кол-во строк. Поскольку было сказано что нужно в рамках БД, то и запрос динамически формируется в скрипте.
Возможно есть путь проще: посмотреть где-то статистику в системных таблицах, как это предлагалось в предыдущих ответах, но вот например в 2000 ms sql я такого не нашел...может в 2005 это где-то есть, а может я плохо искал =)