Получение количества полей в базе данных с помощью оператора SQL?
Как получить количество полей / записей в базе данных с помощью оператора SQL?
5 ответов
МММ все поля во всех таблицах? предполагая стандарты (mssql, mysql, postgres), вы можете выполнить запрос по information_schema.колонки
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
или сгруппированы по таблице:
SELECT TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
Если несколько схем имеют одно и то же имя таблицы в одной БД, необходимо также включить имя схемы (i.e: dbo.Книги, пользователь.Книги, компания.Книг и т. д.) В противном случае вы получите неверные результаты. Так что лучшая практика:
SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME
попробуйте это, это исключит представления, оставьте предложение 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'
похоже, это то, что вам нужно.
select CountOfFieldsInDatabase = count(*)
from information_schema.columns
только для любых других читателей, которые гуглят...
существует несколько решений, отличных от 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;
?>
пожалуйста, извините любую опечатку в приведенном выше-надеюсь, кто-то найдет это полезным
select count(column_name) from information_schema.columns
where table_name = **name of your table here **