2009-09-27 7 views
0

J'ai 2 tables MachineGroups et Machines.erreur lors de la suppression de la base de données

machine Groupes a des valeurs:

MachinegroupID
MachineGroupName
MAchineGroupDesc ​​

Et Machines a des valeurs:

MachineGroupID (FK)
machineID
MachineName Machinedesc

Maintenant, je veux supprimer am machinegroup mais il me donne une erreur parce qu'il ya des valeurs déjà. Donc, je veux supprimer les valeurs qui n'ont pas de machines et donner un message d'erreur si les machines sont préréglées dans un groupe de machine particulier.

J'ai essayé à contacter avec une requête, mais il ne fonctionne pas ..

System.Data.SqlClient.SqlConnection dataConnection = new SqlConnection(); 
      dataConnection.ConnectionString = 
       @"Data Source=JAGMIT-PC\SQLEXPRESS;Initial Catalog=SumooHAgentDB;Integrated Security=True"; 

      System.Data.SqlClient.SqlCommand dataCommand = new SqlCommand(); 
      dataCommand.Connection = dataConnection; 
      long MachineGroupID = Convert.ToInt64(Request.QueryString["node"]); 
      //tell the compiler and database that we're using parameters (thus the @first, @last, @nick) 
      **dataCommand.CommandText = ("Delete from [MachineGroups] where [MachineGroupID][email protected] not in (select distinct MachineGroupId from Machines)");** 

      //add our parameters to our command object 
      dataCommand.Parameters.AddWithValue("@MachineGroupName", MachineGroupName); 
      dataCommand.Parameters.AddWithValue("@MachineGroupDesc", MachineGroupDesc); 
      dataCommand.Parameters.AddWithValue("@TimeAdded", TimeAdded); 
      dataCommand.Parameters.AddWithValue("@MachineGroupID", MachineGroupID); 
      dataConnection.Open(); 

      dataCommand.ExecuteNonQuery(); 
      dataConnection.Close(); 

Ici, je suis en train de supprimer un machineGroup particulier ...

S'il y a une autre façon de le faire s'il vous plaît suggérer .

Répondre

3
Delete from MachineGroups 
where MachineGroupId not in 
    (select distinct MachineGroupId from Machines); 
+0

Je reçois une erreur .. objet non valide nom 'MachineGroups' – user175084

+0

@unknown (google): avez-vous vraiment une table nommée MachineGroups ?? Vérifiez les noms de vos tables. cette requête devrait faire ce que vous voulez faire. – Canavar

0

Je ne l'ai pas essayé cette partie, mais il devrait vous donner une idée

Delete from MachineGroups 
WHERE NOT EXISTS (SELECT TOP 1 MachineID FROM Machines 
WHERE Machines.MachineGroupID= MachineGroups.MachineGroupID) 
+0

je reçois une erreur .. Nom d'objet incorrect « MachineGroups » – user175084

Questions connexes