0

我遇到了一个问题,我想不出解决它的方法。我需要将几种语言的国家名称插入到我的 mysql 数据库上的表中。我找到了这些链接link1 (en) , link2 (de) 等,但我不知道如何进行才能最终得到一个如下所示的表格:

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;
4

2 回答 2

1

好吧,我终于想通了,所以我发帖可能是为了帮助别人。

我创建了 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

于 2012-05-23T15:35:36.967 回答
0

我可以建议你另一种桌子设计。创建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_en和是什么。country_de

于 2012-05-23T15:53:44.367 回答