найти самые широкие столбцы - PullRequest
0 голосов
/ 27 марта 2012

Я делаю некоторые упражнения для практики, и я застрял в этом вопросе

Напишите запрос для отображения списка пяти «самых широких» таблиц в базе данных A1_AdventureWorks.Таблица считается широкой, если в ней много столбцов.Не включайте никакие представления или системные таблицы.

У меня пока есть это, но я получаю несколько случайных ответов

USE A1_AdventureWorks;
SELECT name 
 FROM sys.objects

Я знаю, что должен использовать функцию типа, но не знаю, гдеиспользуйте его, пожалуйста, помогите

Ответы [ 4 ]

2 голосов
/ 27 марта 2012

Запрос sys.objects и sys.columns объединены в object_id.

select O.name
from sys.objects as O
  inner join sys.columns as C
    on O.object_id = C.object_id

Чтобы получить только пользовательскую таблицу, вам нужно отфильтровать по where O.type = 'U'.

Чтобы подсчитать количество столбцов для каждой таблицы, нужно сгруппировать по O.name и добавить count(*) в ваш список полей.

Чтобы получить 5 лучших, вам нужно использовать select top(5), а также добавить order by count(*) desc.

В SQL Server вы можете иметь ту же таблицуимя в другой схеме, поэтому вам также нужно сгруппировать по schema_id.

http://data.stackexchange.com/stackoverflow/query/65157/new

0 голосов
/ 27 марта 2012
select  top 5 name
from    (select a.name,count(b.name) 'CNT'
        from    sysobjects a  , syscolumns b
        where   a.xtype =   'U' -- For considering only user tables -- no views or sys tables 
        and     a.id    =   b.id
        group by a.name) a 
order by CNT desc
0 голосов
/ 27 марта 2012

существует один и тот же вопрос: Найдите количество столбцов в таблице

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'database_name'
  AND table_name = 'tbl_name'

ОБНОВЛЕНИЕ: вы также можете использовать sys.columns:

use yourDataBase
SELECT  COUNT(*)
FROM    sys.columns
WHERE   OBJECT_NAME(object_id) = 'table_name'

ОТВЕТ НА ЭТО НАЗНАЧЕНИЕ: найдите 5 самых широких табличных запросов в sqlserver:

use yourDataBase

select top 5 OBJECT_NAME(object_id)as name,count(*)as num_of_col from sys.columns 
where object_id in (select object_id from sys.tables)
group by object_id
order by num_of_col desc
0 голосов
/ 27 марта 2012

mysql_list_tables, чтобы получить всю таблицу в базе данных для ссылок http://php.net/manual/en/function.mysql-list-tables.php

$result = mysql_query("SELECT * FROM `table`");
while ($row = mysql_fetch_row($result))
{
  foreach ($row as $item)
  $counter=++$i;
}

, чтобы получить количество строк в таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...