Sql 更新员工脚本

Sql 更新员工脚本,sql,oracle,Sql,Oracle,我有一个提供者表,其中包含我们的员工信息。它是这样设置的 UPDATE e SET e.Location_ID = ln.Location_ID ,e.Residents = lc.CustomData FROM Employee e INNER JOIN Location_Notes_Data AS ln ON ln.Note_Author = e.PID INNER JOIN Location_Notes_Custom_Data

我有一个提供者表,其中包含我们的员工信息。它是这样设置的

UPDATE  e
SET     e.Location_ID = ln.Location_ID
        ,e.Residents = lc.CustomData
FROM    Employee e
        INNER JOIN Location_Notes_Data AS ln ON ln.Note_Author = e.PID
        INNER JOIN Location_Notes_Custom_Data lc ON ln.Noteid = lc.Noteid
提供者数据

  • PID
  • 利润
  • 普罗米
  • 序言
当我通常使用此表中的数据时,我将使用case语句(我认为这可能是错误的技术)

我把我的解释改了一点。我使用此代码从另一个表中获取位置ID、Note_Author和Customdata。但是当位置Id和注释作者被填充时,它是这样的:491-12和122083,它没有列出它们的名称。这就是我使用
CASE
语句并手动输入它们的原因


注释作者=PID。我遇到的问题是,当新员工加入或离开时,我的脚本不会反映这一点,除非我手动进入并添加/删除它们。

我猜您只需要加入
。你的问题没有太多细节,但类似这样:

select n.*, pd.*
from notes n left join
     provider_data pd
     on n.note_author = pd.pid

可以从联接的表更新表。我想你是想在员工进出公司时更新他们的记录?我不完全确定,但是如果表之间存在映射,您可以这样编写update语句

UPDATE  e
SET     e.Location_ID = ln.Location_ID
        ,e.Residents = lc.CustomData
FROM    Employee e
        INNER JOIN Location_Notes_Data AS ln ON ln.Note_Author = e.PID
        INNER JOIN Location_Notes_Custom_Data lc ON ln.Noteid = lc.Noteid

这可能是因为你把值硬编码到了这个例子中。如果是,你能做什么?我不知道,要处理的数据太少了。也许将它连接到其他表可以修复它,但我不确定,因为我没有足够的信息。我添加了更多的代码。我也可以加入Provider_数据表,但这不只是列出所有PID吗?我怎么能不用一个箱子就把它们连在一起呢?我在原来的帖子中增加了一些细节。那么你是说我可以加入第三个表,并让该表填充位置Id和注释作者?我不是想更新员工记录。我正在尝试使用字段注释作者(员工姓名)运行报告,但我希望在员工来来去去时更新报告。如果我用
case
语句硬编码,那么如果我们有了一个新员工,我就必须返回并手动添加那个人。