Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удалить записи через INNER JOIN с WHERE / 6 сообщений из 6, страница 1 из 1
16.04.2019, 12:44
    #39802035
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить записи через INNER JOIN с WHERE
Уважаемый форум,

Простая задача, но что-то идет не так...
Две таблицы, данные в одной меняются, измененные записи отмечаются флагом. Задача: удалить из второй таблицы все записи, которые соответствуют измененным записям в первой. Использую такую конструкцию, но при этом из второй таблицы удаляются почему-то и другие записи, которые не изменены в первой таблице:

Код: sql
1.
2.
3.
4.
5.
6.
DELETE FROM dbo_ACC_EVALUATION 
WHERE(dbo_ACC_EVALUATION.ID in 
(SELECT dbo_ACC_EVALUATION.ID 
FROM dbo_ACC_EVALUATION 
INNER JOIN ACC_EVALUATION ON (dbo_ACC_EVALUATION.EV_CASE_NUMBER = ACC_EVALUATION.EV_CASE_NUMBER AND dbo_ACC_EVALUATION.EV_MOPI = ACC_EVALUATION.EV_MOPI) 
WHERE(ACC_EVALUATION.RECORD_VERSION=-1)))



Кроме того, такой запрос выполняется довольно-таки долго, что не есть гут. Подскажите, что я делаю неправильно и как можно решить эту задачу?
...
Рейтинг: 0 / 0
16.04.2019, 12:53
    #39802050
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить записи через INNER JOIN с WHERE
Запрос ниже возвращает идентификаторы записей, которые мне нужно удалить. Но вот дальше - затык. :(

Код: sql
1.
2.
3.
4.
SELECT dbo_ACC_EVALUATION.ID 
FROM ACC_EVALUATION 
INNER JOIN dbo_ACC_EVALUATION ON (dbo_ACC_EVALUATION.EV_CASE_NUMBER = ACC_EVALUATION.EV_CASE_NUMBER AND dbo_ACC_EVALUATION.EV_MOPI = ACC_EVALUATION.EV_MOPI) 
WHERE(ACC_EVALUATION.RECORD_VERSION=-1)
...
Рейтинг: 0 / 0
16.04.2019, 13:21
    #39802085
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить записи через INNER JOIN с WHERE
IFK,
А если такой алгоритм:
После обновления-Если Dirty=true(формы или конкретного поля в записи)
найти соответствующие коду этой записи, записи во второй таблице и запросом на удаление "убить" их.
...
Рейтинг: 0 / 0
16.04.2019, 14:00
    #39802121
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить записи через INNER JOIN с WHERE
sdku, ну, получилось только через рекордсет и затем удаление записей по составному ID, полученному перебором из рекордсета. Хотелось бы, конечно, более изящное решение через INNER JOIN с WHERE
...
Рейтинг: 0 / 0
16.04.2019, 15:10
    #39802212
Удалить записи через INNER JOIN с WHERE
Так попробуйте:
Код: plsql
1.
2.
3.
4.
DELETE  * FROM dbo_ACC_EVALUATION 
WHERE EXISTS (SELECT * FROM ACC_EVALUATION WHERE ACC_EVALUATION.EV_CASE_NUMBER = dbo_ACC_EVALUATION.EV_CASE_NUMBER 
AND ACC_EVALUATION.EV_MOPI = dbo_ACC_EVALUATION.EV_MOPI 
AND ACC_EVALUATION.RECORD_VERSION=-1)
...
Рейтинг: 0 / 0
16.04.2019, 15:13
    #39802214
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить записи через INNER JOIN с WHERE
IFK,
А Вы выложите,чтоб я увидел связи между таблицами,БД или хотя-бы скрин схемы и поясните из какой таблицы и по какому критерию удалять
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удалить записи через INNER JOIN с WHERE / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]