引用其他表时,在单个表上使用删除查询

时间:2018-11-28 21:39:46

标签: sql ms-access sharepoint sql-delete

我想运行一个删除查询,以使用MS Access查询从Sharepoint列表中的表中删除某些数据。但是,我想确保仅根据另一个表的值从单个列表中删除。

该表为TMainData:仅由数字字段组成,这些数字字段引用了其他表中的关键字段,例如具有程序名称的TProgram或具有联系点的TContact或具有诸如Site之类标题的TPositionTitle导演。

所以TMainData条目看起来像  链接到TPrograms的ProgramID:4  ContactID,链接到TContacts:42  PositionTitle,它链接到TPositionTitle:3

这告诉我麻醉学(程序ID 4)的站点主管(TPositionTitle 3)是约翰·史密斯(联系人ID 42)。

这是棘手的地方:我在TPrograms下有一个对TProgramType的引用。我想删除TMainData下的所有记录,这些记录都链接到某个程序类型,因为该程序类型将消失。但是...我还不想删除程序本身,而只是删除TMainData中引用该程序的行。

我看到的“手动”方式是运行查询以标识要为其删除联系人的程序的ProgramID,然后在仅引用TMainData查询的删除查询中使用这些ID。我想知道是否有一种使用引用数据的方法,因为以后可能不得不运行一些荒谬的更新查询,而这需要相同的信息。

我浏览了https://support.office.com/en-us/article/Use-queries-to-delete-one-or-more-records-from-a-database-A323BF1A-C9B4-4C86-8719-BE58BDF1B10C,但似乎并未涵盖根据另一个表中引用的值从一个表中删除。

1 个答案:

答案 0 :(得分:2)

当您陈述以下内容时,您似乎已经了解要达到预期结果所需要做的事情:

  

...运行查询,以确定我要删除其联系人的程序中的ProgramIDs,然后在仅引用TMainData查询的删除查询中使用这些ID。 / p>

如果我正确理解了您的描述,我建议采取以下措施:

delete from tmaindata
where 
tmaindata.programid in
(
    select tprograms.programid 
    from tprograms 
    where tprograms.tprogramtype = 'YourProgramType'
)

在运行delete查询之前始终备份数据-不会撤消操作。