DB Access interrogazione - hanno bisogno di aiuto aggiornare alcuni record
-
20-08-2019 - |
Domanda
Ho un DB di accesso che usiamo per monitorare i biglietti. Ogni biglietto può avere più occorrenze a causa dei diversi cambiamenti di programmazione associati a quel biglietto. Ogni record ha anche un campo program_type che è SVR o VB. Esempio:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
Ho aggiunto una colonna per il database chiamato VB_Flag, che per impostazione predefinita 0, che vorrei cambiare il numero 1 per ogni biglietto contenente codice VB. Quindi, il risultato qui sarebbe:
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
Ma, io non riesco a capire per la vita di me come scrivere questa query di aggiornamento. In un primo momento ho provato:
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
Ma che, ovviamente, lasciato fuori tutto il codice SVR che ha condiviso un numero di ticket con il codice VB.
Sono in perdita. Aiuto?
Soluzione
Questo dovrebbe funzionare:
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
Altri suggerimenti
Si può fare qualcosa di simile:
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
L'istruzione SELECT interna restituisce un elenco di tutti ticket_ids che hanno un program_type di 'VB'.
L'aggiornamento quindi imposta la VB_Flag a 1 per tutti i record con una di quelle ticket_ids (che comprende quelli con un program_type di 'SVR'.
UPDATE tavolo INNER JOIN tabella come Table2 ON Table.TicketNumber = Table2.TicketNumber IMPOSTATO Table2.VB_Flag = 1 DOVE (([Tabella] [program_type] = quot. &; & VB quot;))
Un semplice selezionare nidificato dovrebbe prendersi cura del vostro problema:
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')