Começar o número de campos em um banco de dados com uma instrução SQL?
Pergunta
Como eu poderia obter o número de campos / entradas em um banco de dados utilizando uma instrução SQL?
Solução
mmm todos os campos em todas as tabelas? assumindo padrões (MSSQL, MySQL, Postgres), você pode emitir uma consulta sobre INFORMATION_SCHEMA.COLUMNS
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
Ou agrupados por tabela:
SELECT TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
Se vários esquemas tem o mesmo nome da tabela na mesma DB, você deve incluir o nome do esquema, bem como (ou seja: dbo.Books, user.Books, company.Books etc.) Caso contrário, você vai obter os resultados errados. Portanto, a melhor prática é:
SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME
Outras dicas
tentar isso, isso irá excluir pontos de vista, deixar a cláusula onde se quiser vistas
select count(*) from information_schema.columns c
join information_schema.tables t on c.table_name = t.table_name
and t.table_type = 'BASE TABLE'
Parece que este é o que você precisa.
select CountOfFieldsInDatabase = count(*)
from information_schema.columns
Apenas para quaisquer outros leitores que estão pesquisando ...
Existem várias soluções não-SQL, que podem ser úteis para o usuário .. aqui está 2 que eu uso.
Exemplo 1: Acesso VBA:
'Microsoft Access VBA
Function Count_Fields(Table_Name As String) As Integer
Dim myFieldCount As Integer
Dim db As DOA.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset(Table_Name, dbOpenDynaset)
myFieldCount = rs.Fields.Count
'return the count
Count_Fields = myFieldCount
'tidy up
Set rs = Nothing
Set db = Nothing
End Function
Exemplo 2: PHP 5.1:
<?php
// PHP5 Implementation - uses MySQLi.
function countFields ($tableName) {
$db = new mysqli('myserver.me.com', 'user' ,'pass', 'databasename');
if(!$db) {
echo 'ERROR: Could not connect to the database.';
}
else {
$rs->$db->query("SELECT * FROM ".$tableName.");
$fieldCount = $rs->field_count;
}
return $fieldCount;
?>
por favor, desculpe qualquer erro de digitação de no exemplo acima - esperança alguém acha isso útil
select count(column_name) from information_schema.columns
where table_name = **name of your table here **