从联接更新临时表

时间:2014-01-14 19:26:14

标签: sql join

早上好, 我希望这对你们来说很容易。我有一个临时表,有一个名为'邮件程序'的字段。

“邮件程序”字段可以保存从双连接中连接的多个值。

我包括设计以及连接。

-- code to create the tables and data

create table table_a
(
    ContactID varchar(100),
    Mailer varchar(max)
)

create table table_b
(
    ContactID varchar(100),
    MailerID varchar(100)
)
create table table_c
(
    MailerID varchar(100),
    MailerName varchar(100)
)

insert into table_a
VALUES ('1',''),
    ('2',''),
    ('3',''),
    ('4',''),
    ('5','');

insert into table_B
VALUES ('1','MAIL1'),
    ('1','MAIL2'),
    ('1','MAIL3'),
    ('2','MAIL2'),
    ('2','MAIL4'),
    ('2','MAIL5'),
    ('3','MAIL3'),
    ('4','MAIL4'),
    ('5','MAIL5');

insert into table_c
VALUES ('MAIL1','Mailer1'),
    ('MAIL2','Mailer2'),
    ('MAIL3','Mailer2'),
    ('MAIL4','Mailer4'),
    ('MAIL5','Mailer5');

关系就像这样:

  • Table_A.Contactid可能在Table_B(ContactID)
  • Table_B.MailerID将出现在Table_C(Mailerid)

如果Table_B中的contactID与table_A中的contactID匹配,我需要的是一个将通过table_A运行并从Table_C更新实际Mailer名称的更新

更新后我需要table_A看起来像这样: Table_A.ContactID,Table_A.Mailer
( '1', 'Mailer1; Mailer2; Mailer3')
( '2', 'Mailer2,Mailer4,Mailer5')
( '3', 'Mailer3')
( '4', 'Mailer4')
( '5', 'Mailer5')

SELECT * FROM table_a 

drop table table_a 
drop table table_b
drop table table_c

0 个答案:

没有答案