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?

¿Fue útil?

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')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top