【问题标题】:insert value from one table to another将值从一个表插入到另一个表
【发布时间】:2014-07-29 06:34:22
【问题描述】:

我有两个表TEACHERSABSENCES 他们都有列unitid 所以如果unitidTEACHERS 表是1 我想在@ 中插入那个数字1unitid 987654329@表:

我认为查询应该是这样的

<!-- 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。

这个想法是这样的:Unit id 1(意味着老师教数学)所以当我把 unitid 1 放在缺席时意味着学生缺席了数学。

已经存在的查询是这样的:

mysql_query("插入缺勤(student_id, date)值('".$_GET['student_id']."','".date('Ymd H:i:s')."')") ;

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

更具体的表格是:

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

  • unitid 为 1 的 sbuject 具有 unitname 数学。
  • 拥有 unitid 1 的老师意味着他教数学
  • 单元 id 为 1 的缺勤表示该缺勤是在数学上进行的

【问题讨论】:

  • 插入时是要链接2个表项还是要问如何查询表?
  • ABSENCES 中的相关行是否已经存在于您想要UPDATE 的位置,或者您真的是INSERT 新行吗?
  • 我只想将教师中的 unitid 的值分配给缺勤时的 unitid。这个想法是这样的:Unit id 1(意味着老师教数学)所以当我把 unitid 1 放在缺勤时意味着学生在数学上缺席。已经存在的查询是这样的:mysql_query("insert into absences (student_id, date) values ('".$_GET['student_id']."','".date('Y-m-d H:i:s')."')"); 我希望它更具体地添加它从教师@david @michael 获取的 unitid
  • @DiellAbazi 因为你更新了它,它对我来说更没有意义。如果缺勤是因为学生缺勤,那么老师与它有什么关系?
  • @devon 的老师会缺席。因此,如果教师的 unitid 为 1,则该教师教数学,因此当他缺勤时,缺勤只会发生在数学上,而不会发生在其他单元上。

标签: php mysql sql


【解决方案1】:

你问问题的方式就是:

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 都应该是主键。

【讨论】:

  • @DiellAbazi 您对 unitid 和 ABSENCES 表有什么用?在没有额外上下文的情况下将相同的列存储在另一个表中有什么意义?
  • 我刚刚编辑了问题,请查看结构和关键点
【解决方案2】:

我假设 'unitid' 是 'Teachers' 表中的主键,并且是 'Absences' 表中的外键。

使用 'mysql_insert_id()' 从 'Teachers' 表中获取最后插入的 id 并将其插入到 'Abscences' 表中,以下是 sn-p -

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

$unitid = mysql_insert_id();

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

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

【讨论】:

  • 是的,unitid 是主键,问题是我想通过 unitid 识别缺席的单位,因为表格教师与 unitid 1 表示数学的表格主题相关
  • 如果您不介意可以使用您当前用于“缺席”的表格结构来更新问题
  • 我刚刚做了@user1696621
  • 另一种解决方案是在 'Abscences' 表中使用 'student_id,unitid,date' 列,指定特定学生在特定日期缺席特定科目
猜你喜欢
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2012-03-06
相关资源
最近更新 更多