Pregunta

¿Cómo obtendría el número de campos / entradas en una base de datos usando una instrucción SQL?

¿Fue útil?

Solución

mmm todos los campos en todas las tablas? asumiendo estándares (mssql, mysql, postgres) puede emitir una consulta sobre information_schema.columns

  SELECT COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 

O agrupados por tabla:

  SELECT TABLE_NAME, COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 
  GROUP BY TABLE_NAME

Si varios esquemas tienen el mismo nombre de tabla en la misma base de datos, DEBE incluir también el nombre del esquema (es decir: dbo.Books, user.Books, company.Books, etc.) De lo contrario, obtendrá los resultados incorrectos. Entonces, la mejor práctica es:

SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_SCHEMA, TABLE_NAME

Otros consejos

intente esto, esto excluirá las vistas, deje la cláusula where fuera si desea 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 esto es lo que necesitas.

select CountOfFieldsInDatabase = count(*)
from   information_schema.columns

Solo para cualquier otro lector que esté buscando en Google ...

Hay varias soluciones que no son SQL, que pueden ser útiles para el usuario. Aquí hay 2 que uso.

Ejemplo 1: Acceda a 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

Ejemplo 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;
?>

disculpe cualquier error tipográfico en lo anterior, espero que alguien encuentre esto útil

select count(column_name) from information_schema.columns 
where table_name = **name of your table here **
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top