Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2015, 19:29   #1
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию Удалить запись из всех таблиц

Есть БД в которой 5 таблиц, как сделать запрос чтобы записи удалялись из всех таблиц сразу.
например если год = 2015 то все связанные поля должны удалиться.
Как удалить из одной таблицы я знаю, а вот как удалить из всех сразу не получается, и сделать каскадное удаление таблиц тоже не получается, вернее при удалении таблицы "Студенты" удаляется только записи из двух таблиц которые один к одному связь имеют
Изображения
Тип файла: jpg SNAG-0009.jpg (75.4 Кб, 58 просмотров)
romantik1993 вне форума Ответить с цитированием
Старый 02.06.2015, 09:39   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

А какое отношение(СМЫСЛ) имеет студенты.код к предприятие.код ?
аналогично студенты.код (тот же самый) и преподаватели.код.

Судя по всему эти связи сделаны только потому что "все таблицы должны быть связаны"

А удаление каскадом должно начинаться с головной таблицы.

Для таблицы студенты такими будут ДВЕ (преподаватели, предприятия)

Поэтому "каскадное" удаление надо начинать с них!
и удалять КАЖДУЮ по отдельности
Код:
delete from преподаватели
delete from предприятия
Только вот что преподаватели и предприятия каждый год разные ?!
Зачем-то их удалять каждый год?
Цитата:
например если год = 2015 то все связанные поля должны удалиться.
среди студентов могут найтись те у которых НЕ БЫЛО связей (код =NULL)
и поэтому ее тоже неплохо бы чистить.
Код:
delete from студенты
А гарантированную очистку ВСЕХ таблиц надо наоборот начинать с самой-самой подчиненной.
Код:
delete from результат where результат.зачетка in (select зачетка from студенты where .... =2015 )
delete from диплом where диплом.зачетка in (select зачетка from студенты where .... =2015 )
delete from студенты where  ...  =2015 
---именно так себя ведет на самом деле и каскадное удаление (разве что не записывает это SQL кодом)
delete from преподаватели where ???
delete from предприятия where ???
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.06.2015 в 09:43.
evg_m вне форума Ответить с цитированием
Старый 03.06.2015, 19:29   #3
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Нашлась ошибка в самой структуре базы, переделываю базу. ТЕМА НЕ АКТУАЛЬНА.

ВСЕМ СПАСИБО
romantik1993 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбор данных из всех таблиц в одну. goldline2000 Microsoft Office Excel 1 12.05.2012 14:07
Удалить столбец со всех листов. contrelesgaz Microsoft Office Excel 5 29.04.2011 00:22
Полное форматирование всех таблиц в документе чохом Vera111 Microsoft Office Word 3 18.04.2011 19:11
Макрос Сводной Таблиц для всех листов Richard123 Microsoft Office Excel 4 21.01.2011 12:53
Форматирование всех таблиц... Busine2009 Microsoft Office Word 1 27.06.2009 12:03