Использование запроса на удаление одной таблицы при обращении к другим таблицам - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу выполнить запрос на удаление, чтобы удалить определенные данные из таблицы в списке Sharepoint с помощью запроса MS Access.Однако я хочу быть уверенным, что удаляюсь только из одного списка на основе значений другой таблицы.

Таблица - это TMainData: она состоит исключительно из числовых полей, которые являются ссылками на ключевые поля в других таблицах, такие какTProgram, который имеет имя программы, или TContact, у которого есть точка контакта, или TPositionTitle, который имеет заголовок, такой как Site Director.

Таким образом, запись TMainData выглядит примерно как ProgramID, который ссылается на TPrograms: 4 ContactID, которыйссылки на TContacts: 42 PositionTitle, который ссылается на TPositionTitle: 3

Это говорит мне о том, что директором сайта (TPositionTitle 3) анестезиологии (ProgramID 4) является Джон Смит (ContactID 42).

Вот где это становится сложным: у меня есть ссылка под TPrograms на TProgramType.Я хочу удалить все записи в TMainData, где они ссылаются на определенный тип программы, потому что этот тип программы исчезает.ОДНАКО ... Я не хочу удалять саму программу (пока), только строки, ссылающиеся на эту программу в TMainData.

"Ручной" способ, которым я вижу это, состоит в том, чтобы запускать запросы, которые идентифицируютProgramID - это программы, для которых я хочу удалить контакты, а затем использовать эти идентификаторы в запросе на удаление, который ссылается только на запрос TMainData.Мне интересно, есть ли способ использовать ссылочные данные, потому что мне, возможно, придется запускать несколько нелепых запросов на обновление позже, которые будут нуждаться в такой же информации.

Я копал 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 голосов
/ 29 ноября 2018

Вы уже, кажется, понимаете, что вам нужно сделать, чтобы достичь желаемого результата, когда вы заявляете:

... запускаете запросы, которые определяют, какие ProgramIDs из программ, которые я хочуудалите контакты для, а затем используйте эти идентификаторы в запросе на удаление, который ссылается только на запрос TMainData.

Если я правильно понял ваше описание, я бы предложил что-то вроде:

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

Всегда делайте резервную копию ваших данных перед выполнением delete запросов - отмена не производится.

...