2013-02-28 94 views
0

一個簡單的MySQL問題:MySQL:從其他表中檢索id

我有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_id到switch_id在表「接口」。

在這個例子中:每一個開關與該端口: 「交換機2 _...」 應該獲得Switch_id:1" , 「開關5 _...」 應該得到Switch_id:2,等等

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

的switch_id從 「接口」 應該自動從表中的 「開關」

回答

0

這將是不明確的 - 你有兩個名爲「switch2」的交換機:id值爲1和4.那麼你想讓id 1或id 4與名爲「switch2」的交換機關聯嗎?

更好的方法是讓你改變你如何填充表格。首先創建一個交換機,使用last_insert_id()找到它的id,然後在爲接口添加所有記錄時使用該值作爲switch_id。然後,您不必回頭再修復 - 從一開始就在正確的位置獲得正確的價值。

+0

謝謝!我嘗試過使用last_insert_id,但它只是給出了「0」作爲輸出。我認爲這是因爲我沒有在數據庫中插入數據,但我只是從文本文件中加載它。任何想法? 至於名稱爲「switch2」的兩個開關,那只是我插入的一些測試數據。在真實的情況下,這裏永遠不會有兩個同名的交換機。 – dreez 2013-02-28 12:49:14