for me problem this select insert

  • create table table1

    (phone int,kod_name int ,kod_fname int,kod_country int,kod_auto int) --

    create table table2 (name_ nvarchar(30),kod int)

    insert into table2 values('james',1)

    insert into table2 values('stivens',2)

    insert into table2 values('carlos',3)

    create table table3 (f_name nvarchar(30),kod int)

    insert into table2 values('john',1)

    insert into table2 values('tayson',2)

    insert into table2 values('swarzneger',3)

    create table table4 (country nvarchar(30),kod int)

    insert into table2 values('argentina',1)

    insert into table2 values('brazilia',2)

    insert into table2 values('korea',3)

    create table table5 (m_auto nvarchar(30),kod int)

    insert into table2 values('mersedec',1)

    insert into table2 values('jaguar',2)

    insert into table2 values('landrover',3)

    how i make created procedure

    for insert to table1

    when name=james then in kod_name_d insert 1 (kod table2)

    when fname=jhon then in kod_fname insert 1 (kod table3 )

    when country=korea then in kod_country insert 3 (kod table4 )

    when auto=jaguar then in kod_auto insert 2 (kod table5 )

    forexamle

    i inserted table 1

    (11111,'james','jhon','korea','jaguar')

    after inserted table1

    table1

    -----------

    phone kod_name kod_fname kod_country kod_auto

    ----- -------- --------- ----------- --------

    11111 1 1 3 2

  • i created procedure

    but this procedure inserted only phone

    create procedure inserttable1

    @phone int,

    @n nvarchar(30),@f nvarchar(30),@c nvarchar (30),@t nvarchar(30)

    as

    insert table1 select @phone,(select kod from table2 where name_='@n'),(select kod from table3 where f_name='@f'),

    (select kod from table4 where country='c'),(select kod from table5 where m_auto='@t')

    exec inserttable1 1111,'stivens','tayson','argentina','mersedec'

    select*from table1

  • You need to join the lookup tables to the inputs to convert to the key values:

    --== SAMPLE DATA ==--

    if object_id('table1') is not null

    drop table table1;

    if object_id('table2') is not null

    drop table table2;

    if object_id('table3') is not null

    drop table table3;

    if object_id('table4') is not null

    drop table table4;

    if object_id('table5') is not null

    drop table table5;

    create table table1

    (phone int,kod_name int ,kod_fname int,kod_country int,kod_auto int) --

    create table table2 (name_ nvarchar(30),kod int)

    insert into table2 values('james',1)

    insert into table2 values('stivens',2)

    insert into table2 values('carlos',3)

    create table table3 (f_name nvarchar(30),kod int)

    insert into table3 values('john',1)

    insert into table3 values('tayson',2)

    insert into table3 values('swarzneger',3)

    create table table4 (country nvarchar(30),kod int)

    insert into table4 values('argentina',1)

    insert into table4 values('brazilia',2)

    insert into table4 values('korea',3)

    create table table5 (m_auto nvarchar(30),kod int)

    insert into table5 values('mersedec',1)

    insert into table5 values('jaguar',2)

    insert into table5 values('landrover',3)

    --== EXPECTED RESULTS ==--

    --how i make created procedure

    --for insert to table1

    --when name=james then in kod_name_d insert 1 (kod table2)

    --when fname=jhon then in kod_fname insert 1 (kod table3 )

    --when country=korea then in kod_country insert 3 (kod table4 )

    --when auto=jaguar then in kod_auto insert 2 (kod table5 )

    --forexamle

    --i inserted table 1

    --(11111,'james','jhon','korea','jaguar')

    --after inserted table1

    --table1

    -------------

    --phone kod_name kod_fname kod_country kod_auto

    ------- -------- --------- ----------- --------

    --11111 1 1 3 2

    --== SOURCE DATA ==--

    if object_id('source_data') is not null

    drop table source_data;

    create table source_data

    (

    s_phone nvarchar(30),s_name nvarchar(30) ,s_fname nvarchar(30),s_country nvarchar(30),s_auto nvarchar(30)

    )

    insert into source_data values

    (

    11111,'james','john','korea','jaguar'

    )

    --== SUGGESTED SOLUTION ==--

    insert into table1

    (phone,kod_name,kod_fname,kod_country,kod_auto)

    select

    source_data.s_phone,

    table2.kod,

    table3.kod,

    table4.kod,

    table5.kod

    from source_data

    inner join table2 on s_name = name_

    inner join table3 on s_fname = f_name

    inner join table4 on s_country = country

    inner join table5 on s_auto = m_auto

    select * from table1

  • gurbanov.1984 (7/6/2013)


    i created procedure

    but this procedure inserted only phone

    create procedure inserttable1

    @phone int,

    @n nvarchar(30),@f nvarchar(30),@c nvarchar (30),@t nvarchar(30)

    as

    insert table1 select @phone,(select kod from table2 where name_='@n'),(select kod from table3 where f_name='@f'),

    (select kod from table4 where country='c'),(select kod from table5 where m_auto='@t')

    exec inserttable1 1111,'stivens','tayson','argentina','mersedec'

    select*from table1

    You don't need the quotes round the parameter names:

    create procedure inserttable1

    @phone int,

    @n nvarchar(30),@f nvarchar(30),@c nvarchar (30),@t nvarchar(30)

    as

    insert table1

    (phone,kod_name,kod_fname,kod_country,kod_auto)

    select @phone,(select kod from table2 where name_=@n),(select kod from table3 where f_name=@f),

    (select kod from table4 where country=@c),(select kod from table5 where m_auto=@t)

  • THANK YOU VERY MUCH VETERAN

    but i created this

    create procedure inserttable1

    @phone int,

    @n nvarchar(30),@f nvarchar(30),@c nvarchar (30),@t nvarchar(30)

    as

    insert table1

    (phone,kod_name,kod_fname,kod_country,kod_auto)

    select @phone,(select kod from table2 where name_=@n),(select kod from table3 where f_name=@f),

    (select kod from table4 where country=@c),(select kod from table5 where m_auto=@t)

    insert test

    (phone,kod_name,kod_fname,kod_country,kod_auto)

    select

    phone,kod_name,kod_fname,kod_country,kod_auto from table1 where phone=@phone and phone is not null and phone<>0

    exec inserttable1 '','stivens','tayson','argentina','mersedec'

    thank you very much

Viewing 5 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic. Login to reply