Access DB query - besoin d'aide pour mettre à jour certains enregistrements
-
20-08-2019 - |
Question
J'ai une base de données d'accès que nous utilisons pour suivre les tickets. Chaque ticket peut avoir plusieurs occurrences en raison de changements de programmation différents associés à ce ticket. Chaque enregistrement possède également un champ type_programme qui est SVR ou VB. Exemple:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
J'ai ajouté une colonne à la base de données appelée VB_Flag, dont la valeur par défaut est 0, que je souhaite remplacer par le numéro 1 pour chaque ticket contenant du code VB. Donc, le résultat ici serait:
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
Mais, je ne sais pas comment écrire pour moi cette requête de mise à jour. Au début, j'ai essayé:
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
Mais cela a évidemment laissé de côté tout le code SVR qui partageait un numéro de ticket avec le code VB.
Je suis perdue. Aide?
La solution
Cela devrait fonctionner:
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
Autres conseils
Vous pouvez faire quelque chose comme ceci:
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
L'instruction SELECT interne renvoie une liste de tous les ticket_ID dont le type de programme est 'VB'.
La mise à jour définit ensuite VB_Flag sur 1 pour TOUS les enregistrements avec l'un de ces ticket_ids (y compris ceux dont le type de programme est 'SVR'.
MISE À JOUR Table INNER JOIN Table AS Table2 ON Table.TicketNumber = Table2.TicketNumber ENSEMBLE Table2.VB_Flag = 1 OÙ (([Table]. [Programme_type] = & Quot; VB & Quot;))
Une simple sélection imbriquée devrait résoudre votre problème:
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')