2

我有 3 张桌子:

tblNames

|  id  |   firstname   |   lastname   |
+------+---------------+--------------+
|  1   |   John        |   Smith      |

tblJosbs(此表同时接受多个复选框值):

|  id  |   jobs                |
+------+-----------------------+
|  1   |   Nurse               |
+------+-----------------------+
|  2   |   Call Center Agent   |
+------+-----------------------+
|  3   |   Police              |

tblNamesJobs(此表用于JOIN其他 2 个表):

|  id  |   name_id   |   jobs_id   |
+------+-------------+-------------+
|  1   |   1         |   1         |
+------+-------------+-------------+
|  2   |   1         |   2         |
+------+-------------+-------------+
|  3   |   1         |   3         |

一切都很好,但是有人可以告诉我在INSERT添加新信息时应该使用的第三张表的语句吗?

4

3 回答 3

2

例如添加John Smith呼叫中心代理的记录

insert into tblNamesJobs (name_id,jobs_id )
values (
         select id from tblNames where 
                firstname='John' 
                and lastname='Smith' limit 1
         ,
         select id from tblJosbs where jobs='Call Center Agent' limit 1
        );
于 2012-12-29T07:29:14.870 回答
0
INSERT INTO tblNamesJobs (name_id, jobs_id) VALUES (XXXX,YYYY)

这是假设表的 id 是自动递增的。

需要注意的是,“joiner”表中的name_id 和jobs_id 列都应该是另一个表中相应列的外键。

编辑 - Valex 的回答更详细地说明了如果您还没有 id 值该怎么做。

如果可能的话,我建议使用某种可以为您处理“joiner”表的框架。

于 2012-12-29T07:24:51.903 回答
0

如果您已经依赖于 tauto increment..您可以获得 lastinserid,具体取决于您的适配器。例如。mysql_insert_id

对于 PDO,我们可以使用 -- PDO::lastInsertId。

因此您将拥有先前插入的表格的 ID,您可以将其保存在新表格中。

于 2012-12-29T07:30:41.880 回答