2009-06-23 15 views
10

SQLステートメントを使用してデータベースのフィールド数/エントリ数を取得するにはどうすればよいですか?SQLステートメントを使用してデータベースのフィールド数を取得していますか?

+0

見つけた願っていますテーブルにある属性の数とテーブルの行数を取得する方法を尋ねる – northpole

+1

フィールド/エントリはどういう意味ですか?あなたは行の数を意味しますか?列の数?テーブルの数?上記のすべて?もしそうなら、どのデータベースエンジンを使用していますか? –

+0

"entries"はデータベースにありますか?レコード、テーブルの列、またはテーブルの数を意味しますか? – devio

答えて

23

mmmすべての表のすべてのフィールドは?あなたはinformation_schema.columns

SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 

やテーブルでグループ化された以上のクエリを発行することができます基準(MSSQLは、MySQL、Postgresのを)仮定:

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

複数のスキーマが同じDBに同じテーブル名を持っている場合は、スキーマ名も含める必要があります(例:dbo.Books、user.Books、company.Booksなど)。そうしないと、間違った結果が得られます。だから、ベストプラクティスは次のとおりです。これは何が必要であるように

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

FYIにはビューも含まれます – SQLMenace

+0

いずれにしても、彼はエンジンを指定しておらず、その動作はmssql固有のものです。 –

+0

MySQLとPostgreSQLの両方がinformation_schema.tablesにtable_typeを持っています – SQLMenace

3

where句うち、あなたが望む

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' 
をしたい場合は
1

を残し、これはビューを除外します、これを試してみてくださいが鳴ります。ただ、グーグルでされている他の読者のために

select CountOfFieldsInDatabase = count(*) 
from information_schema.columns 
+1

列を記述するテーブル内のカウントROWS。データベース内の列ごとに1行。 –

+0

@Ken:いいえ、それは間違いなくDB内のすべてのテーブルの列数を数えています。 (これはやりたいことはやや役に立たないですが、それはOPが求めているものです) –

+0

ケン、各列は1列になります – SQLMenace

0
select count(column_name) from information_schema.columns 
where table_name = **name of your table here ** 
0

...

ユーザにとって有用である可能性があるいくつかの非SQLソリューションは、あります... ここで私が使用する2です。

例1: アクセス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 

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

は、上記の任意のタイプミスの言い訳をしてください - あなたがしている誰かが、この便利な

関連する問題