2012-11-02 38 views
0

我试图将数据从一个表格移动到两个新表格中,但我不确定如何以最好和最简单的方式来执行此操作。将一个表格转换为两个新表格

我在newsletter_users约2000行,看起来像这样:

userid company email memberofgroup 

其中

memberofgroup 

是指newsletter_mailgroups整数。如果用户想成为不同组的成员,这不是最好的方式。然后会有相同电子邮件的x行。 2000个用户×3或4个不同的组(我怎么想的?)所以我做了两个新表

newsletter_members看起来像这样

userid email company 

和另一个表newsletter_member_of_group看起来像这样:

field_member_uid field_user_id field_memberofgroup 

其中

field_user_id 

将包含用户id来自newsletter_members和

field_memberofgroup 

将包含电子邮件组ID。 F.X.

field_user_id field_memberofgroup 
    2     6 
    2     4 
    2     8 
    3     1 
    5     6 

我怎么能导出,然后导入它们以最好的方式,这样的邮件不会在newsletter_members复制? - 我可能需要手动检查以查看哪些用户是多个邮件组的成员。

邮件组表:

1 Forhandlere 
2 Arkitekter og byggerådgivere 
3 Typehusfabrikanter 
4 Byggeentreprenører 
5 Murermestre 
6 Tømrermestre 
7 Tagdækkere 
8 Boligforeninger/Ejendomsselskaber 
9 Bygge-interesserede 
10 Tyske modtagere 
11 Landskabsarkitekter 
12 Norske arkitekter 
13 Svenske arkitekter 
14 Norske forhandlere 
15 Svenske forhandlere 
16 Brancherelaterede 
17 Svenske ansatte 
18 Norske ansatte 
19 Beijer Sverige 

回答

1

在几个步骤的解决方案:

  • 了解创建newsletter_member_of_group

脚本:

CREATE TABLE newsletter_member_of_group(
    field_member_uid INT PRIMARY KEY AUTO_INCREMENT, 
    field_user_id INT, 
    field_memberofgroup INT 
); 

注意field_member_uid是AUTO_INCREMENT,它将帮助我们插入ID值。

  • 复制数据从newsletter_usersnewsletter_member_of_group

脚本:

INSERT INTO newsletter_member_of_group 
    SELECT NULL, userid, memberofgroup FROM newsletter_users; 
  • 创建newsletter_members表。我们有两个变体:创建新表和复制数据,或者将newsletter_users重命名为newsletter_members,并删除memberofgroup字段。我选择第二个变体。

脚本:

ALTER TABLE newsletter_users RENAME TO newsletter_members; 
ALTER TABLE newsletter_members DROP COLUMN memberofgroup; 
+0

谢谢你为这个!我没有想到只是改变现有的桌子!这样我就会完全按照原样获得它!我正在重置ID并将其导入新的memberofgroup表!谢谢! –

相关问题