Запрос к базе данных Access - нужна помощь в обновлении определенных записей
-
20-08-2019 - |
Вопрос
У меня есть база данных access, которую мы используем для отслеживания билетов.Каждый билет может иметь несколько вхождений из-за различных программных изменений, связанных с этим билетом.Каждая запись также имеет поле program_type, которое является SVR или VB.Пример:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
Я добавил в базу данных столбец с именем VB_Flag, значение которого по умолчанию равно 0, которое я хотел бы изменить на число 1 для каждого билета, содержащего код VB.Таким образом, результатом здесь было бы:
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
Но я ни за что на свете не могу понять, как написать этот запрос на обновление.Сначала я пытался:
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
Но это, очевидно, не учитывало весь код SVR, который разделял номер билета с кодом VB.
Я в растерянности.Помочь?
Решение
Это должно сработать:
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
Другие советы
Вы можете сделать что-то вроде этого:
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
Оператор inner SELECT возвращает список всех ticket_ids, которые имеют program_type 'VB'.
Затем обновление устанавливает VB_Flag равным 1 для ВСЕХ записей с одним из этих ticket_id (включая записи с program_type 'SVR').
Обновить Таблица ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ таблицы КАК Table2 В таблице.Номер билета = Table2.Номер билета УСТАНОВИТЬ Table2.VB_Flag = 1 ГДЕ (([Таблица].[program_type]="VB"))
Простой вложенный select должен решить вашу проблему:
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')