0

問題に遭遇しましたが、それを解決する方法が思いつきません。複数の言語の国名を mysql db のテーブルに挿入する必要があります。これらのリンク 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 に答える