2012-05-23 65 views
0

我遇到了一个问题,我不能想办法解决它。 我需要用几种语言将国家名称插入到我的mysql数据库的表中。 我发现这些链接link1(EN),link2(DE)等,但我不知道怎么做才能继续终于有一个表看起来像这样:mysql合并脚本来创建表

CREATE TABLE `country` (
    `id` varchar(2) NOT NULL, 
    `en` varchar(64) NOT NULL, 
    `de` varchar(64) NOT NULL, 
    ... 
    ... 
    PRIMARY KEY (`id`) 
) ENGINE=MYISAM DEFAULT CHARSET=utf8; 
+0

你为什么需要它?为什么不使用链接中的'country'表格? – Devart

+0

我需要它在很多语言中用于我设置的多语言网站 – bikey77

回答

1

好了,我终于想通了,所以我” m张贴也许帮助其他人。

我创建2个表(country_en)和(country_de),然后运行以下语句:

DROP table if exists `countries`; 

CREATE TABLE `countries` (
    id varchar(2), el varchar(100), de varchar(100) 
); 

INSERT INTO `countries` 
SELECT country_en.id, el, de 
FROM country_en 
JOIN country_de ON (country_en.id = country_de.id); 

其中创建表countries,并加入他们的公用密钥id

0

我的其他2个表可以建议你另一个桌子的设计。创建languages表,并修改一下country表:添加lang_id字段并创建外键 - FOREIGN KEY(lang_id) REFERENCES语言(id)。然后填写languagescountry表。

例如:

CREATE TABLE languages(
    id VARCHAR(2) NOT NULL, 
    name VARCHAR(64) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE = INNODB; 

CREATE TABLE country(
    id VARCHAR(2) NOT NULL, 
    lang_id VARCHAR(2) NOT NULL DEFAULT '', 
    name VARCHAR(64) NOT NULL, 
    PRIMARY KEY (id, lang_id), 
    CONSTRAINT FK_country_languages_id FOREIGN KEY (lang_id) 
    REFERENCES languages (id) ON DELETE RESTRICT ON UPDATE RESTRICT 
) 
ENGINE = INNODB; 

-- Populate languages 
INSERT INTO languages VALUES 
    ('en', 'English'), 
    ('de', 'German'); 

-- Populate names from 'en' table 
INSERT INTO country SELECT id, 'en', name FROM country_en; 

-- Populate names from 'de' table 
INSERT INTO country SELECT id, 'de', name FROM country_de; 

...其中country_encountry_de是从你的链接表。