我有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 |
一切都很好但有人可以在我添加新信息时向我显示我应该使用的第3个表的INSERT
语句吗?
答案 0 :(得分: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
);
答案 1 :(得分:0)
INSERT INTO tblNamesJobs (name_id, jobs_id) VALUES (XXXX,YYYY)
假设表的id是自动递增的。
应该注意,“joiner”表中的name_id和jobs_id列都应该是另一个表中各列的外键。
编辑 - 如果您还没有id值,Valex的答案会详细说明该怎么做。
如果可能,我建议使用某种框架来处理“joiner”表。
答案 2 :(得分:0)
如果你已经依赖tauto增量..你可以获得lastinserid,具体取决于你的适配器。 例如。的 mysql_insert_id 强>
对于PDO我们可以使用 - PDO :: lastInsertId。
所以你将拥有早期插入表的id,你可以保存在新表中。