12
votes

SQL: Nombre de colonnes dans toutes les tables, à l'exclusion des vues

Je crée une requête qui renvoie le nombre de colonnes dans chaque table, mais je veux exclure les vues.

Les travaux suivants mais renvoie les résultats de vue: P>

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


1 commentaires

Dupliquer Stackoverflow.com/Questtions/1033726/...


4 Réponses :


0
votes

rejoindre informations_schema.tables pour savoir si la table est une vue. xxx


1 commentaires

Chaque groupe par expression doit contenir au moins une colonne qui n'est pas une référence extérieure.



19
votes

Ceci assume SQL 2005 ou supérieur

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


1 commentaires

La sortie est deux colonnes "Nom du tableau" et "Nombre de colonnes"; Parfait!



4
votes

quelque chose comme ceci: xxx


1 commentaires

Nom de colonne invalide 'schema_name'. Nom de colonne non valide 'catalog_name'.



0
votes
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 
This code shows the table names and their columns count in front of them.
you can add the schema name if you want.

0 commentaires