2017-02-19 12 views
0

2つのテーブル(すべてのトピックが分類されているTopicsCategories)を含むデータベースを作成していたときに、私は一般的にMySQLとデータベースで非常に未経験であったからです。MySQLの既存の2つのテーブルの間に関係を追加する

簡単なアプローチは、TopicsテーブルのCategory列にカテゴリの名前を挿入することでした。

いくつかのカテゴリ名を変更する必要がありましたので、変更するだけでなく、Topicsテーブルのすべての関連エントリを同化する必要があるため、この決定を後悔します。これは簡単に正しいMySQL文で行うことができますが、非常に面倒な解決策です。

既存のテーブルに意図した関係を追加することはまだ可能ですか?これまで私は類似のトピックで見つかったいくつかのアプローチを試しましたが、ほとんどは他の問題に関するものでした。 Topicsカテゴリの列とCategoriesの名前の列が同じ値を共有するのに役立ちます。カテゴリの名前。

トピック:

+----+------+----------+------+ 
| Id | Name | Category | Date | 
+----+------+----------+------+ 

カテゴリー:

+------+-------------+ 
| Name | Description | 
+------+-------------+ 

私はすべてのソリューションや先端のために感謝していますが、それは、コマンドラインまたはphpmyadminのためになります!

答えて

1

カテゴリーにIDを追加します。

enter code here`ALTER TABLE `categories` ADD `Id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`Id`); 

は、トピックにカテゴリIDを追加します:あなたが確認した後

UPDATE `topics`, `categories` SET `topics`.`Category_Id` = `categories`.`Id` WHERE `topics`.`Category` = `categories`.`Name` 

ALTER TABLE `topics` ADD `Category_Id` INT NOT NULL AFTER `Name`; 

を次にカテゴリーに基づいてカテゴリIDを更新すべてが良いです、topicsを参照しているコードを変更してください。 Category JOINを使用してテーブルを接続し、categoriesを使用してください。 Nameの代わりにcategoriesを削除してください。 Nameフィールド。

関連する問題