我如何编写一个动态的sql脚本,将农民转移给不同的员工

时间:2018-05-30 09:01:48

标签: sql postgresql

表:农民

Id     |  name  |   gender  |   created

14224  |  nadra |    Male   | 2018-02-28 08:47:47
14225  |  david |    Male   | 2018-02-28 08:47:47
14226  |  doreen|    Female | 2018-02-28 08:47:47
14227  |  lydia |    Female | 2018-02-28 08:47:47

表:员工

Id  |   name  | title       | gender

1   | Amos    | Manager     |   Male
2   | Nelson  | Field Worker|   Male

表:employees_farmers

employee_id | farmer_id

1            | 14224
1            | 14225
2            | 14226
2            | 14227

好的,假设我们想将员工Amos的农民转移给员工Nelson,因为Amos不再愿意监督那些农民......我们知道Amos农民的名字是监督......所以使用sql脚本转移Amos的农民到Nelson ..... Amos是id = 1且Nelson id = 2的雇员,Amos农民是nadra,david

<?php

$employee_name = “Nelson”;

$farmersArray = array(‘nadra’,’david’);

$arrLength = count($farmersArray);

//find the employee id 

$employee_id = "Select id from employees where name = ‘$employee_name’";

//loop throught the array of the farmers to find the id of each farmers

for ($x = 0; $X < $arrlength; $x++){

$farmer_id = "Select id from farmers where name = ‘$farmer_name’";

}

$Query =  "INSERT INTO employees_farmers (employee_id, farmer_id) 

values ($employee_id, $farmer_id) ";
?>

sql版本..

farmer_transfer_prep.sql

 -- Clear all previously defined prepared statements (in this session)
DEALLOCATE ALL;
-- update the id of the old employee to the new employee on table employees_farmers
PREPARE updateoldemployeeidtonew (int, int) As
UPDATE
employees_farmers
SET employee_id = $1
WHERE employee_id = $2;

farmer_transfer_exec.sql

- 将旧员工的ID更新为表employee_farmers上的新员工-param 1表示新的,param 2表示旧表

EXECUTE updateoldemployeeidtonew (6 , 3);

仍在写

1 个答案:

答案 0 :(得分:0)

要将农民从一个员工转移到另一个员工,您不需要循环访问它们并插入新的员工,您可以在获取old_employee_id和新的employee_id值后更新employees_farmers表(通过选择名称,当您所做的那样):

UPDATE employees_farmers SET employee_id=$new_employee_id WHERE employee_id=$old_employee_id