我想运行一个删除查询,以使用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,但似乎并未涵盖根据另一个表中引用的值从一个表中删除。
答案 0 :(得分:2)
当您陈述以下内容时,您似乎已经了解要达到预期结果所需要做的事情:
...运行查询,以确定我要删除其联系人的程序中的
ProgramIDs
,然后在仅引用TMainData
查询的删除查询中使用这些ID。 / p>
如果我正确理解了您的描述,我建议采取以下措施:
delete from tmaindata
where
tmaindata.programid in
(
select tprograms.programid
from tprograms
where tprograms.tprogramtype = 'YourProgramType'
)
在运行delete
查询之前始终备份数据-不会撤消操作。