Запрос к базе данных Access - нужна помощь в обновлении определенных записей

StackOverflow https://stackoverflow.com/questions/496483

  •  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')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top