2012-05-23 4 views
0

Я столкнулся с проблемой, и я не могу придумать способ ее решения. Мне нужно вставить названия стран на несколько языков в таблицу на моем mysql db. Я нашел эти ссылки link1 (еп), link2 (де) и т.д., но я не знаю, как поступить, чтобы, наконец, таблица вида:mysql merge scripts для создания таблицы

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 и присоединяется к другим 2 таблицы по их общему ключу id

0

I может предложить вам другой дизайн стола. Создайте таблицу languages и немного измените таблицу country: добавьте lang_id поле и создайте внешний ключ - FOREIGN KEY (lang_id) . ССЫЛКИ Языки (id). Затем заполните languages и country таблиц.

Например:

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_en и country_de столы из ваших ссылок.

Смежные вопросы