2012-05-23 99 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是從你的鏈接表。