sql - How to do the mutiple insert into..select query in a single insert statement? -


i'm having multiple insert into..select statement below. if u see, there 1 column value(req_attrname) changing in 3 statements.everything else same including where conditions.

insert statement 1)

insert details(repo_phyid,repo_type,repo_attrname,repo_attrvalue                     ,req_phyid,req_type,req_attrname,req_attrvalue)  select demo.phyid,'complementary item','product management responsible',demo.attr_value,                    tnr.phyid,'complementary item','**product manager**',demo.attr_value        repo_tnr tnr,repo_tnr_attribute demo         tnr.phyid=demo.phyid               , demo.attr_name='product management responsible'              , tnr.type='complementary item' 

insert statement 2)

insert details(repo_phyid,repo_type,repo_attrname,repo_attrvalue,                      req_phyid,req_type,req_attrname,req_attrvalue)  select demo.phyid,'complementary item','product management responsible',demo.attr_value,                    tnr.phyid,'complementary item','**quality manager**',demo.attr_value        repo_tnr tnr,repo_tnr_attribute demo         tnr.phyid=demo.phyid               , demo.attr_name='product management responsible'              , tnr.type='complementary item' 

insert statement 3)

insert details(repo_phyid,repo_type,repo_attrname,repo_attrvalue                     ,req_phyid,req_type,req_attrname,req_attrvalue)  select demo.phyid,'complementary item','product management responsible',demo.attr_value                     ,tnr.phyid,'complementary item',**'depty engineer**',demo.attr_value         repo_tnr tnr,repo_tnr_attribute demo          tnr.phyid=demo.phyid                , demo.attr_name='product management responsible'               , tnr.type='complementary item' 

what i'm trying here is, if select returns me 20 rows, first have insert 20 rows product manager value req_attrname have insert same 20 rows quality manager , again deputy engineer . accomplish i'm using 3 insert statement. i'm having 15 20 insert statement. there way can in single insert statement? me decrease code , increase readbility. kindly provide alternate solution.

since req_attrname constants, can query of them dual , cross join result on original query each row query matches each req_attrname:

insert details (repo_phyid,                      repo_type,                      repo_attrname,                      repo_attrvalue,                      req_phyid,                      req_type,                      req_attrname,                      req_attrvalue)  select     demo.phyid,            'complementary item',            'product management responsible',            demo.attr_value,            tnr.phyid,            'complementary item',            req_attrname,            demo.attr_value       repo_tnr tnr join       repo_tnr_tttribute demo on tnr.phyid = demo.phyid cross join (select '**product manager**' req_attrname dual             union             select '**quality manager**' req_attrname dual             union             select '**depty engineer**'  req_attrname dual) t      demo.attr_name = 'product management responsible' ,            tnr.type = 'complementary item' 

Comments