El acceso DB consulta - necesita ayuda actualizan determinados registros
-
20-08-2019 - |
Pregunta
Tengo una base de datos de acceso que se utiliza para rastrear las entradas. Cada entrada puede tener múltiples ocurrencias debido a los diferentes cambios de programación asociados con ese boleto. Cada registro tiene también un campo program_type que es SVR o VB. Ejemplo:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
He añadido una columna a la base de datos llamada VB_Flag, que por defecto es 0, lo que me gustaría cambiar al número 1 por cada boleto que contiene código de VB. Por lo tanto, el resultado en este caso sería:
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
Sin embargo, no puedo averiguar por la vida de mi forma de escribir esta consulta de actualización. Al principio traté de:
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
Pero eso, obviamente, dejado de lado todo el código RVS que comparte un número de ticket con el código de VB.
Estoy en una pérdida. Ayudar?
Solución
Esto debería funcionar:
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
Otros consejos
Puede hacer algo como esto:
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
La instrucción SELECT interna devuelve una lista de todos los que tienen un ticket_ids program_type de 'VB'.
La actualización a continuación, establece la VB_Flag a 1 para todos los registros con una de esas ticket_ids (que incluye aquellos con un program_type de 'SVR'.
ACTUALIZACIÓN Mesa INNER JOIN Tabla 2 Tabla AS EN Table.TicketNumber = Table2.TicketNumber CONJUNTO Table2.VB_Flag = 1 DÓNDE (([Tabla]. [Program_type] = "VB"))
Un simple selecto anidado debe tener cuidado de su problema:
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')