我想在员工ID中插入多个月的工资。现在我只能在一个客户ID中插入一个月的工资

时间:2016-11-11 12:42:49

标签: php mysql

"employee" table has E_ID, E_Name, E_Address, E_Mail, E_Dept. [E_ID is primary key]

"salary" table has E_ID, S_Amount, S_Date columns.

假设E_ID为4001且为11月。我只能将11月份的工资插入4001 E_ID。但我想插入12月,1月,2月。将所有月份的工资分成一个E_ID,并且还要查看每个月的工资。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

在薪资表格中,添加一个新列,说“' id'将其设置为整数,主键,自动增量。

不要将E_ID作为Salary表中的主列。由于您已将其定义为主键,因此您只能插入一次。主键是唯一的密钥表,不会重复。

您可以使用此脚本

CREATE TABLE IF NOT EXISTS `salary` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `E_ID` int(11) NOT NULL,
  `S_Amount` decimal(10,2) NOT NULL,
  `S_Date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

这里S_Amount列是Decimal类型,因为它用于存储工资。你也可以使用整数

答案 1 :(得分:0)

salary.E_ID删除主键。主键要求该列中的每个值都是唯一的 - 这就是为什么您只能为特定员工输入一行的原因。我想你可以为列E_IDS_Date添加一个唯一的密钥,因为每个员工每月可能只有一个条目。

这里要在表格中插入多行,

INSERT INTO salary (E_ID, S_Amount, S_Date) 
VALUES
    (4001, 250.00, "2016-09"),
    (4001, 235.00, "2016-10"),
    (4001, 280.00, "2016-11")

我已经对这个例子做了一些补充,但它应该解释原则。

答案 2 :(得分:0)

确保名为" salary"的表格没有E_ID作为主键。它可以使您输入具有相同E_ID的同一员工的许多薪水条目。

而是将E_ID列在" salary"表作为外键,以便您可以检查特定员工的每个月工资。