Joomla 3.1 Templates by FatCow Coupon

как размножить строки... cross join и connect by

Категория: Блог Опубликовано 24.05.2017

итак , нам необходимо размножить строки в некоторой таблице, на основе заданного запроса 
пусть это будет следующий запрос

select object_name from all_objects where object_type = 'CLUSTER'


этот запрос вернет нам 10 строк , по условиям задачи необходимо повторить эти 10 строк по 10 раз

создадим таблицу с размноженными строками , здесь на поможет конструкция cross join и оператор иерархии connect by

вот скрипт создания такой таблицы:

 create table copy1 as select * from 
 (select level lnl from dual connect by level < 11) 
cross join (select object_name from all_objects where object_type = 'CLUSTER') 


где level < 11 количество вставляемых строк 

подсчитаем количество строк в данной таблице 

 select count(*) from copy1


-- 100 строк, все верно

продемонстрируем работу оператора insert применительно к данной задаче
очистим таблицу

delete from copy1;


произведем вставку 

insert into copy1(lnl, object_name) 
select * from (select level lnl from dual connect by level < 11) cross join 
(select object_name from all_objects where object_type = 'CLUSTER')



посмотрим, что получилось

select object_name,count(1) from copy1 group by object_name
Просмотров: 146