Obtenir le nombre de champs dans une base de données avec une instruction SQL?
Question
Comment puis-je obtenir le nombre de champs / entrées dans une base de données à l'aide d'une instruction SQL?
La solution
mmm tous les champs dans toutes les tables? En assumant les standards (mssql, mysql, postgres), vous pouvez émettre une requête sur information_schema.columns
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
Ou groupé par table:
SELECT TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
Si plusieurs schémas ont le même nom de table dans la même base de données, vous DEVEZ également inclure le nom de schéma (c'est-à-dire: dbo.Books, user.Books, company.Books, etc.). Sinon, vous obtiendrez des résultats erronés. La meilleure pratique est donc:
SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME
Autres conseils
essayez ceci, cela exclura les vues, laissez la clause where en dehors si vous voulez des vues
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'
On dirait que c'est ce dont vous avez besoin.
select CountOfFieldsInDatabase = count(*)
from information_schema.columns
Juste pour tous les autres lecteurs qui googlent ...
Il existe plusieurs solutions non SQL qui peuvent être utiles à l'utilisateur. voici 2 que j'utilise.
Exemple 1: Accéder à 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
Exemple 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;
?>
Veuillez excuser les fautes de frappe mentionnées ci-dessus - espérons que quelqu'un trouvera cela utile
select count(column_name) from information_schema.columns
where table_name = **name of your table here **