Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在引用其他表时对单个表使用删除查询_Sql_Ms Access_Sharepoint_Sql Delete - Fatal编程技术网

Sql 在引用其他表时对单个表使用删除查询

Sql 在引用其他表时对单个表使用删除查询,sql,ms-access,sharepoint,sql-delete,Sql,Ms Access,Sharepoint,Sql Delete,我想运行删除查询,以使用MS Access查询从Sharepoint列表中的表中删除某些数据。但是,我希望确保仅根据另一个表的值从单个列表中删除 该表是TMainData:它仅由数字字段组成,这些字段是对其他表中关键字段的引用,例如具有程序名称的TProgram,或具有接触点的TContact,或具有类似Site Director的标题的TPositionTitle 因此,TMainData条目看起来像 ProgramID,它链接到TPrograms:4 ContactID,链接到t联系人:42

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

该表是TMainData:它仅由数字字段组成,这些字段是对其他表中关键字段的引用,例如具有程序名称的TProgram,或具有接触点的TContact,或具有类似Site Director的标题的TPositionTitle

因此,TMainData条目看起来像 ProgramID,它链接到TPrograms:4 ContactID,链接到t联系人:42 PositionTitle,它链接到tpPositionTitle:3

这告诉我麻醉学(ProgramID 4)的现场主管(TPositionTitle 3)是John Smith(ContactID 42)

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

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


我仔细研究了一下,但它似乎不包括根据另一个表中引用的值从一个表中删除

当您陈述以下内容时,您似乎已经明白需要做什么才能达到预期的结果:

…运行查询,确定我要删除联系人的程序的
程序ID
,然后在仅引用
TMainData
查询的删除查询中使用这些ID

如果我正确理解了您的描述,我会提出以下建议:

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

在运行
delete
查询之前,请始终备份您的数据-不存在撤消操作。

您似乎已经了解了在声明以下内容时需要执行哪些操作才能获得所需的结果:

…运行查询,确定我要删除联系人的程序的
程序ID
,然后在仅引用
TMainData
查询的删除查询中使用这些ID

如果我正确理解了您的描述,我会提出以下建议:

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

在运行
delete
查询之前,请始终备份数据-没有撤消操作。

有多少个程序ID?创建连接表的查询,以便可以查看程序类型。然后考虑:
DELETE FROM query WHERE[Program Type]IN(7,11,28,35)
我没有考虑使用多个查询,我会研究一下。有多少程序ID?创建连接表的查询,以便可以查看程序类型。然后考虑:
DELETE FROM query WHERE[Program Type]IN(7,11,28,35)
我没有考虑使用多个查询,我会研究一下。我想我明白了。因此,如果我必须根据TPrograms中引用的属性进行选择,我想是的。我试图传达的是,如果TPrograms中的相关记录是基于TPrograms中指向第三个表的查找值的,而第三个表引用了第四个表,那么我只需要将该链接构建到select的SQL中。只要“deletefrom”只列出TMainData,它就不会执行“引用完整性”删除。是吗?@RobertPatrician是的,你是对的-你可以在
select
子查询的基础上进行构建,该子查询获得适当的
programmaid
值,而
delete
查询将保持有效,因为这里没有关于要从哪个表中删除记录的歧义。我想我明白了。因此,如果我必须根据TPrograms中引用的属性进行选择,我想是的。我试图传达的是,如果TPrograms中的相关记录是基于TPrograms中指向第三个表的查找值的,而第三个表引用了第四个表,那么我只需要将该链接构建到select的SQL中。只要“deletefrom”只列出TMainData,它就不会执行“引用完整性”删除。正确吗?@RobertPatrician是的,你是正确的-你可以在
select
子查询的基础上进行构建,该子查询获得适当的
programmaid
值,而
delete
查询将保持有效,因为这里没有关于要从哪个表中删除记录的歧义。