Подсчет столбцов таблицы Oracle — Суб-Выбор

#sql #oracle #sql-subselect

Вопрос:

Мне действительно нужно только количество столбцов в таблицах в SQL-запросе, но почему-то я не могу получить правильный результат. Кто-нибудь знает, что я делаю не так?

 select count(*) from user_tab_columns where table_name='tablename' //works and gives me the number of columns   select   TABLE_NAME,   NUM_ROWS,  (select count(*) from user_tab_columns where table_name=TABLE_NAME) as Test from user_tables   

Ответ №1:

Ха-ха, посмотри на это:

 where table_name=TABLE_NAME  

Это всегда будет верно, потому что имя таблицы-это имя таблицы.

Вот запрос с полными именами столбцов:

 select   table_name,   num_rows,  (select count(*) from user_tab_columns tc where tc.table_name = t.table_name) as test from user_tables t;  

Комментарии:

1. Спасибо за помощь, в этом есть смысл. Используйте псевдоним. давно не развивались. ^^,

2. Добро пожаловать 🙂 То же самое , конечно, будет работать без псевдонимов: where user_tab_columns.table_name = user_tables.table_name , но псевдонимы быстрее набираются и быстрее схватываются.

Ответ №2:

В качестве альтернативы вы можете объединить весь запрос:

 select t.table_name  , num_rows  , count(*) as num_columns from user_tables t  join user_tab_columns c on c.table_name = t.table_name group by t.table_name, t.num_rows order by 1;