2013-02-28 83 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