Comment puis-je insert dans une table si une valeur n'existe pas, mais seulement pour certains critères? (MS SQL Server)

Im très nouveau à SQL mais besoin d'écrire une requête pour faire ce qui suit. En utilisant MS SQL Server 2005.


 Définition du profil Définition du profil
 ------ ------------------- ----------      
 ProfileID DefinitionID DefinitionID
 ProfileType ProfileID DefinitionType
 Nom de profil                                          

Dans la table de définition, le type de définition peut être TypeA, TypeB ….. TypeZ. Je veux m'assurer que pour un certain type de profil, ProfileTypeA la définition a tous les types, TypeA -> TypeZ.

Mais certains types existent déjà dans la table, et je ne veux pas avoir de duplicates.

 Donc c'est quelque chose comme
 SELECT ProfileID du profil où ProfileType = ProfileTypeA
 POUR CHAQUE ProfileID
    SI N'EXISTE PAS EN Définition TypeA
    INSÉRER TypeA dans la définition
    INSERT ProfileID, DefinitionID dans DefinitionInProfile

    ... répétez pour TypeB, TypeC ...
 FIN
  1. Je dois get toutes les instances où ProfileType = ProfileTypeA

  2. Ensuite, obtenez le premier Profile.profileID

  3. Ensuite, vérifiez la table DefinitioninProfile pour get une list des DefinitionID où le profileID = Profile.ProfileID

  4. Ensuite, pour tous ces ID de définition, vérifiez s'il existe un type de définition appelé 'TypeA' si vous ne l'insérez pas, s'il est ignoré. Faites de même pour 'TypeB', répétez pour typec, .. typeZ

Revenez à l'étape 2 et obtenez le Profile.ProfileID suivant et répétez les étapes 3 et 4 pour cet ID de profil.

Essaye ça:

INSERT DefinitionInProfile (ProfileID, DefinitionID) SELECT P.ProfileID, D.DefinitionID FROM --All permutations of P and D Profile P CROSS JOIN Definition D WHERE --Edit (added 2 rows) --But filter and lookup type -> id P.ProfileType = ProfileTypeA AND --End edit --But not where the defid is already there for that profileid NOT EXISTS (SELECT * --or 1!! FROM DefinitionInProfile DP WHERE DP.ProfileID = P.ProfileID AND DP.DefinitionID= D.DefinitionID)