0

簡単なMySQLの質問:

「インターフェース」と「スイッチ」という2つのテーブルがあります。

テーブル「スイッチ」:

create table switch (
      name varchar(15), 
      swversion varchar(15), 
      bootversion varchar(15), 
      serialnumber varchar(30), 
      rootbridge varchar(10), 
      address varchar(20), 
      switch_id MEDIUMINT NOT NULL AUTO_INCREMENT, 
      PRIMARY KEY(switch_id));

テーブル「インターフェイス」:

create table interfaces (
      port varchar(15), 
      type varchar(20), 
      duplex varchar(15), 
      speed varchar(5), 
      neg varchar(20), 
      flowctrl varchar(5), 
      linkstat varchar(5), 
      backpres varchar(20), 
      mdixmode varchar(5), 
      switch_id int(11), 
      PRIMARY KEY(port));

テーブル「Switch」からテーブル「Interfaces」のswitch_idにswitch_idを取得したいと思います。

この例では、ポートが「Switch2 _...」のすべてのスイッチはSwitch_id:1を取得する必要があり、「Switch5 _...」はSwitch_id:2を取得する必要があります。

http://img51.imageshack.us/img51/4470/switchid.png

「インターフェイス」のswitch_idは、テーブル「スイッチ」のswitch_idで自動的に更新されます。

4

2 に答える 2

0

これを試して

INSERT INTO Interfaces(switch_id)
SELECT switch_id
FROM Switch WHERE......

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

于 2013-02-28T11:14:07.230 に答える
0

あいまいになります。「switch2」という名前の 2 つのスイッチがあります。ID 値は 1 と 4 です。ID 1 または ID 4 を「switch2」という名前のスイッチに関連付けますか?

より良いアプローチは、テーブルへの入力方法を変更することです。最初にスイッチを作成し、last_insert_id() を使用してその ID を見つけてから、インターフェイスのすべてのレコードを追加するときにその値を switch_id として使用します。後で戻って修正する必要はありません。最初から適切な場所で適切な値を取得できます。

于 2013-02-28T11:17:13.140 に答える