Запрос доступа к БД - нужна помощь в обновлении определенных записей - PullRequest
2 голосов
/ 30 января 2009

У меня есть БД доступа, которую мы используем для отслеживания билетов. Каждый тикет может иметь несколько вхождений из-за разных программных изменений, связанных с этим тикетом. Каждая запись также имеет поле 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.

Я в растерянности. Помощь

Ответы [ 4 ]

2 голосов
/ 30 января 2009

Вы можете сделать что-то вроде этого:

UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');

Внутренний оператор SELECT возвращает список всех ticket_ids, которые имеют тип_программы 'VB'.

Обновление затем устанавливает VB_Flag в 1 для ВСЕХ записей с одним из этих ticket_ids (включая те, которые имеют тип_программы 'SVR'.

1 голос
/ 30 января 2009

UPDATE Таблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица КАК Таблица 2 ON Table.TicketNumber = Table2.TicketNumber ЗАДАВАТЬ Table2.VB_Flag = 1 ГДЕ (([Таблица]. [Program_type] = "ВБ"))

1 голос
/ 30 января 2009

Это должно работать:

UPDATE table SET VB_Flag = 1 
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
0 голосов
/ 30 января 2009

Простой вложенный выбор должен позаботиться о вашей проблеме:

UPDATE myTable
SET VB_Flag = 1 
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...