2009-06-23 11 views
10

Làm cách nào để nhận được số lượng trường/mục nhập trong cơ sở dữ liệu bằng cách sử dụng một câu lệnh SQL?Lấy số trường trong cơ sở dữ liệu bằng một câu lệnh SQL?

+0

bạn hỏi làm thế nào để có được số thuộc tính của một bảng có cộng với số lượng hàng trong bảng? – northpole

+1

Bạn có ý nghĩa gì bởi các trường/mục nhập? Bạn có nghĩa là số hàng không? Số cột? Số bàn? Tất cả những điều trên? Nếu có, bạn đang sử dụng công cụ cơ sở dữ liệu nào? –

+0

"mục" trong cơ sở dữ liệu? bạn có nghĩa là hồ sơ, hoặc cột trong một bảng, hoặc số bảng? – devio

Trả lời

23

mmm tất cả các trường trong tất cả các bảng? giả định tiêu chuẩn (MSSQL, mysql, postgres), bạn có thể phát hành một truy vấn trên bảng information_schema

SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 

Hoặc nhóm lại theo bảng:

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

Nếu nhiều schemas có tên bảng trong cùng DB, bạn PHẢI bao gồm tên lược đồ là tốt (ví dụ: dbo.Books, user.Books, company.Books, v.v.) Nếu không bạn sẽ nhận được kết quả sai. Vì vậy, các thực hành tốt nhất là:

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

FYI cũng sẽ bao gồm số lượt xem – SQLMenace

+0

Trong mọi trường hợp, anh ta không chỉ định công cụ và hành vi đó có thể là cụ thể của mssql. –

+0

cả MySQL và PostgreSQL có table_type trong information_schema.tables – SQLMenace

3

thử điều này, điều này sẽ loại trừ quan điểm, rời khỏi mệnh đề where ra nếu bạn muốn xem

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

Âm thanh như thế này là những gì bạn cần.

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

ROWS đếm của nó trong bảng mô tả các cột. Một hàng trên mỗi cột trong cơ sở dữ liệu. –

+0

@Ken: Không, nó chắc chắn đếm số cột trên tất cả các bảng trong DB. (Đó là một điều hơi vô dụng để làm, nhưng đó là những gì OP yêu cầu.) –

+0

Ken, mỗi hàng sẽ là một cột – SQLMenace

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

Chỉ cần cho bất kỳ độc giả khác đang googling ...

Có một số giải pháp phi SQL, có thể hữu ích cho người sử dụng .. đây là 2 mà tôi sử dụng.

Ví dụ 1: Tiếp cận 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 

Ví dụ 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; 
?> 

xin vui lòng tha bất kỳ lỗi đánh máy của ở trên - hy vọng ai đó tìm thấy này hữu ích