2011-09-09 20 views
1

私はmysqlの問題があります。あなたのうちの一人が私を助けてくれることを願います!別のテーブルにmysqlカラムを移動する

固有のID(U_ID)を照合することによって、S 'のtable_1の横のカラムの列をIは、同じ長さを持つ2つのテーブルを持っていると私はtable_2を移動したいと思います。

私が持っているテーブル構造。私が欲しい

のtable_1

id - u_id - field_1 - field_2 
1 - 123 - abc  - (empty) 
2 - 456 - fgd  - (empty) 

table_2

id - u_id - field_2 
1 - 123 - kjh  
2 - 456 - mnb 

表構造。

table_new

id - u_id - field_1 - field_2 
1 - 123 - abc  - kjh 
2 - 456 - fgd  - mnb 

私はこれをどのように行うことができますか?

ありがとう...

+0

実際の問題は何ですか?これまでに何を試しましたか? –

答えて

0

これは、PHPで行うのに十分です。 ここにあなたを始めるための擬似コードがあります。

SELECT u_id, field_1 FROM table_1; 
    (while results) 
    { 
      SELECT field_2 FROM table_2 WHERE u_id = ?; 

       INSERT INTO table_new VALUES (u_id, field_1, field_2); 

    } 
+0

ありがとうございます。私は小さなスクリプトを書いて、それは働いた。 – kaya

+0

は最適な解決策ではありません。 – jancha

0

あなたは通常、select文で使用するPHP関数と呼ばれるクエリを持っていると仮定すると:

あなたが外部キーを維持する必要がある場合...基本的な考えですかあなたがする必要がありますトリガ
$tables = array(); 
$tables[] = query("DESCRIBE table_1"); 
$tables[] = query("DESCRIBE table_2"); 

$sql = "CREATE TABLE `table_new` {"; 

foreach ($tables as $table) { 
    foreach ($table as $col) { 
    $sql .= "`".$col['Field']."` ".$col['Type']; 
    if ($col['Null'] == "NO") $sql .= " NOT "; 
    $sql .= " NULL"; 
    if ($col['Default'] != "NULL") $sql .= " DEFAULT '".$col['Default']."'"; 
    $sql .= ", "; 
    } 
} 

$sql .= ")"; 

MySQLのプロンプトでinformation_schema.statisticsテーブル

2

に探し始める:

INSERT INTO table_new (id, u_id, field_1, field_2) SELECT t1.id, t1.u_id, 
    t1.field_1, t2.field_2 FROM table_1 t1 JOIN table_2 t2 ON (t1.u_id = t2.u_id); 

または単に

UPDATE table_1 SET field_2 = (SELECT t2.field_2 FROM table_2 t2 WHERE t2.u_id = table_1.u_id) 
0

CREATE TABLE table_newとして選択t1.id、t1.u_id、t1.field_1、のtable_1 t1からt2.field2がt1.u_id = t2.u_idにtable_2 T2に参加左。

+0

あなたの声明にはタイプミスがあります。 – Bruce

+0

にキーワードがありません。 – jancha

2

私はマルチテーブルのUPDATE構文を使用します。

UPDATE table1 JOIN table2 USING (u_id) 
SET table1.field_2 = table2.field_2; 
+0

ありがとう...私はこれも私の問題を解決できると思うが、私はそれを行うためのPHPコードを書いている。次回はあなたのソリューションを試してみます。ありがとう... – kaya

0

まず、table_newを作成します。それから、MySQL SELECT INTOを使用してください。多分このようなもの:

INSERT INTO table_new SELECT table_1.u_id, table_1.field_1, table_2.field_2 
FROM table_1 LEFT JOIN table_2 USING (u_id); 
関連する問題