#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;