2010-08-18 6 views
0

J'ai une base de données SQL Server 2008 avec 2 tables. Ces tables sont définies comme suit:Mise à jour des valeurs de propriété parent dans SQL

Device 
------ 
ID 
Name 
Description 
TotalApplications 

Application 
----------- 
ID 
Name 
DeviceID 

J'ai récemment ajouté la colonne « TotalApplications » dans un effort pour accélérer une requête qui prend trop longtemps. Le nombre d'applications associées à un appareil ne changera pas très souvent. Quand c'est le cas, j'aurai besoin d'écrire un déclencheur pour gérer cela. Mais pour l'instant, j'ai juste besoin de remplir ma base de données.

Actuellement, TotalApplications associé à chaque périphérique est 0. Il est clair que j'ai besoin de mettre à jour cette valeur pour tous mes enregistrements de périphérique. Cependant, je ne peux pas comprendre comment faire cela. Quelqu'un peut-il expliquer comment je peux mettre à jour la valeur TotalApplications pour mes enregistrements de périphériques?

Merci beaucoup pour votre aide!

Répondre

2

Utilisation:

UPDATE DEVICE 
    SET totalapplications = (SELECT COUNT(*) 
           FROM APPLICATION a 
          WHERE a.deviceid = DEVICE.id) 
WHERE totalapplications = 0 
1

OMG Ponies réponse serait certainement travailler pour cela, mais si cela était mon db j'éviter de faire ajouter la colonne et en utilisant la gâchette. Au lieu d'utiliser l'indexation ou je ne peux pas y arriver avec des index je voudrais utiliser une vue indexée. Faites-moi savoir si vous voulez que je publie cela.

Questions connexes