将值从一个表插入另一个表

时间:2014-06-08 16:10:58

标签: php mysql sql

我有两个表TEACHERSABSENCES他们都有列unitid所以如果unitidTEACHERS1我想要在1表格中将该号码unitid插入ABSENCES

我认为查询应该看起来像这样

<!-- language: lang-sql -->

INSERT INTO ABSENCES (unitid)
select unitid
from TEACHERS
where unitid = teachers id here(please advise what i should put here)

此外,我的应用程序是在PHP上,所以也许我可以使用if语句或其他东西


编辑:

我只想在缺席的情况下将教师的unitid值分配给unitid。

这个想法是这样的:单位ID 1(意思是老师教数学)所以当我把unitid 1放到缺席时意味着学生缺少数学。

已存在的查询是:

mysql_query(&#34;插入缺席(student_id,日期)值(&#39;&#34;。$ _ GET [&#39; student_id&#39;]。&#34;&#39;, &#39;&#34;。日期(&#39; Ymd H:我:s&#39;)。&#34;&#39;)&#34;);

我希望它更具体地添加从教师那里获得的unitid

更具体的表格是:

SUBJECTS ABSENCES TEACHERS unitid absence_id username unitname student_id password date unitid unitid

  • 带有unitid 1的sbuject具有unitname数学。
  • 拥有unitid 1的老师意味着他教数学
  • 缺少单位ID为1表示缺少数学

2 个答案:

答案 0 :(得分:0)

你问这个问题的方式是:

INSERT INTO ABSENCES (unitid) VALUES (1);

如果unitid为1,则插入1,没有主键支持它就没有意义。

如果unitid是1并且您想要插入教师ID,那么它会更有意义,但是您似乎仍然不需要ABSENCES表,除非您尝试插入具有相同教师ID的多个行。在这种情况下,您需要一个带有第二个字段的复合键,例如日期。

INSERT INTO ABSENSES (teacher_id, date) 
SELECT teacher_id, CURDATE() FROM teachers WHERE unitid = 1

在这种情况下,teacher_id和date都应该是主键。

答案 1 :(得分:0)

我认为'unitid'是'Teachers'表中的主键,是'Absences'表中的外键。

使用'mysql_insert_id()'从'Teachers'表中获取最后插入的id并使用相同的内容插入'Abscences'表中以下是片段 -

mysql_query("INSERT INTO TEACHERS (...) values (...)");

$unitid = mysql_insert_id();

然后使用上面的$ unitid插入'Abscences'表中,如下所示 -

mysql_query("INSERT INTO ABSCENCES (unitid,other_cols) values ('$unitid',other_values)");