2011-03-01 29 views
9

Her tablodaki sütun sayısını döndüren bir sorgu oluşturuyorum, ancak Görünümleri hariç tutmak istiyorum.SQL: Görünümler hariç tüm tablolardaki sütunların sayısını sayın

SELECT COUNT(*), table_name 
FROM INFORMATION_SCHEMA.COLUMNS 
Group By table_name 

Herhangi öneriler:

aşağıdaki eserlerini ancak Görünüm sonuçları döndürür?

NOT: MSSQL 2005+

+1

Hangi veritabanı için? –

+1

yinelenen http://stackoverflow.com/questions/1033726/getting-number-of-fields-in-a-database-with-an-sql-statement –

cevap

11

Bu böyle SQL 2005 veya daha yüksek

SELECT 
    t.name, 
    count(c.name) 
FROM 

    sys.tables t 
    inner join sys.columns c 
    ON t.object_id = c.object_id 


group by t.name 
0

tablo bir görünümdür olmadığını öğrenmek için INFORMATION_SCHEMA.TABLES katılın.

SELECT COUNT(col.column_name), tab.table_name 
FROM INFORMATION_SCHEMA.tables tab 
JOIN INFORMATION_SCHEMA.COLUMNS col ON col.table_name = tab.table_name 
WHERE tab.table_type != 'VIEW' 
GROUP BY 2 
ORDER BY 2 
+0

Her GROUP BY ifadesi, en az bir sütun içermelidir. dış referans – Colin

4

şey varsayar:

SELECT COUNT(col.column_name), col.table_name 
FROM information_schema.columns col 
    JOIN information_schema.tables tbl 
     ON tbl.table_name = col.table_name 
      AND tbl.table_schema = col.table_schema 
      AND tbl.table_catalog = col.table_catalog 
      AND tbl.table_type <> 'VIEW' 
GROUP BY col.table_name 
+0

Geçersiz sütun adı 'schema_name'. Geçersiz sütun adı 'catalog_name'. – Colin

+0

@Colin: Teşekkürler. Düzeltilmiş –

0
SELECT tab.table_name,COUNT(col.column_name) 
FROM INFORMATION_SCHEMA.tables tab 
JOIN INFORMATION_SCHEMA.COLUMNS col ON col.table_name = tab.table_name 
WHERE tab.table_type != 'VIEW' 
GROUP BY tab.table_name 
ORDER BY tab.table_name 

Bu kod tablosu adlarını gösterir ve onların sütunları önlerinde sayılır. İsterseniz şema adını ekleyebilirsiniz.

+0

Kodunuza bazı öğeler ekleyin –

İlgili konular